在php中array_multisort()可實(shí)現(xiàn)一次對(duì)多個(gè)數(shù)組進(jìn)行排序,或者根據(jù)某一維或多維對(duì)多維數(shù)組進(jìn)行排序,如果成功則返回 TRUE,失敗則返回 FALSE.
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )
如果成功則返回 TRUE,失敗則返回 FALSE.
array_multisort() 可以用來(lái)一次對(duì)多個(gè)數(shù)組進(jìn)行排序,或者根據(jù)某一維或多維對(duì)多維數(shù)組進(jìn)行排序.
關(guān)聯(lián)(string)鍵名保持不變,但數(shù)字鍵名會(huì)被重新索引.
例子 1. 對(duì)多維數(shù)組排序?qū)嵗a如下:
- <?php
- $ar = array(
- array("10", 11, 100, 100, "a"),
- array( 1, 2, "2", 3, 1)
- );
- array_multisort($ar[0], SORT_ASC, SORT_STRING,
- $ar[1], SORT_NUMERIC, SORT_DESC);
- var_dump($ar);
- ?>
In this example, after sorting, the first array will transform to "10", 100, 100, 11, "a" (it was sorted as strings in ascending order). The second will contain 1, 3, "2", 2, 1 (sorted as numbers, in descending order).
實(shí)例代碼如下:
- array(2) {
- [0]=> array(5) {
- [0]=> string(2) "10"
- [1]=> int(100)
- [2]=> int(100)
- [3]=> int(11)
- [4]=> string(1) "a"
- }
- [1]=> array(5) {
- [0]=> int(1)
- [1]=> int(3)
- [2]=> string(1) "2"
- [3]=> int(2)
- [4]=> int(1)
- }
- }
本例中經(jīng)過(guò)排序后,第一個(gè)數(shù)組將包含 10,100,100,"a"(作為字符串上升排序),第二個(gè)數(shù)組將包含 1,3,"2",1(作為數(shù)值下降排序).
例子 2. Sorting multi-dimensional array實(shí)例代碼如下:
- <?php
- $ar = array(
- array("10", 11, 100, 100, "a"),
- array( 1, 2, "2", 3, 1)
- );
- array_multisort($ar[0], SORT_ASC, SORT_STRING,
- $ar[1], SORT_NUMERIC, SORT_DESC);
- var_dump($ar);
- ?>
本例中在排序后,第一個(gè)數(shù)組將變成 "10",100,100,11,"a"(被當(dāng)作字符串以升序排列).第二個(gè)數(shù)組將包含 1, 3, "2", 2, 1(被當(dāng)作數(shù)字以降序排列).
實(shí)例代碼如下:
- array(2) {
- [0]=> array(5) {
- [0]=> string(2) "10"
- [1]=> int(100)
- [2]=> int(100)
- [3]=> int(11)
- [4]=> string(1) "a"
- }
- [1]=> array(5) {
- [0]=> int(1)
- [1]=> int(3)
- [2]=> string(1) "2"
- [3]=> int(2)
- [4]=> int(1)
- }
- }
實(shí)例3 綜合實(shí)現(xiàn)來(lái)看一個(gè)關(guān)于在應(yīng)用中常用的實(shí)例代碼如下:
- header('Content-Type: text/html; charset=utf-8');
- echo '<pre>';
- //原始數(shù)組格式
- $array = array(
- 'key1' => array(
- 'item1' => '65',
- 'item2' => '35',
- 'item3' => '84',
- ),
- 'key2' => array(
- 'item1' => '24',
- ),
- 'key3' => array(
- 'item1' => '38',
- 'item3' => '45',
- ),
- );
- //要排序的鍵
- //按照數(shù)組中的 item1進(jìn)行排序
- //你也可以換成item2
- $sort = 'item1';
- foreach($array as $k => $v)
- {
- $newArr[$k] = $v[$sort];
- }
- //這個(gè)函數(shù)如果執(zhí)行正確他會(huì)直接改變?cè)瓟?shù)組鍵值的順序
- //如果執(zhí)行失敗,那么他會(huì)返回 bool(false)
- array_multisort($newArr,SORT_DESC, $array);
- var_dump($array);
- //---------------------排序后的數(shù)組打印效果 開(kāi)始--------------------
- array(3) {
- ["key1"]=>
- array(3) {
- ["item1"]=>
- string(2) "65"
- ["item2"]=>
- string(2) "35"
- ["item3"]=>
- string(2) "84"
- }
- ["key3"]=>
- array(2) {
- ["item1"]=>
- string(2) "38"
- ["item3"]=>
- string(2) "45"
- }
- ["key2"]=>
- array(1) {
- ["item1"]=>
- string(2) "24"
- }
- }
- //---------------------排序后的數(shù)組打印效果 結(jié)束---------------------
新聞熱點(diǎn)
疑難解答