array_multisort — 對多個數組或多維數組進行排序
array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。
關聯(string)鍵名保持不變,但數字鍵名會被重新索引
返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE
參數
-
array1 -
要排序的 array。
-
array1_sort_order -
之前 array 參數要排列的順序。
SORT_ASC按照上升順序排序,SORT_DESC按照下降順序排序。此參數可以和
array1_sort_flags互換,也可以完全刪除,默認是SORT_ASC。 -
array1_sort_flags -
為 array 參數設定選項:
排序類型標志:
SORT_REGULAR- 將項目按照通常方法比較(不修改類型)SORT_NUMERIC- 按照數字大小比較SORT_STRING- 按照字符串比較SORT_LOCALE_STRING- 根據當前的本地化設置,按照字符串比較。 它會使用 locale 信息,可以通過 setlocale() 修改此信息。SORT_NATURAL- 以字符串的"自然排序",類似 natsort()SORT_FLAG_CASE- 可以組合 (按位或 OR)SORT_STRING或者SORT_NATURAL大小寫不敏感的方式排序字符串。
參數可以和
array1_sort_order交換或者省略,默認情況下是SORT_REGULAR。
Example #1 多個數組排序
<?php $ar1 = array(10, 100, 100, 0); $ar2 = array(1, 3, 2, 4); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2); ?>
結果:
array(4) {
[0]=> int(0)
[1]=> int(10)
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(4)
[1]=> int(1)
[2]=> int(2)
[3]=> int(3)
}
Example #2 排序多維數組
<?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); ?>
結果:
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) } }
Example #3 對數據庫結果進行排序
<?php $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); ?>
<?php
// 將數據根據 volume 降序排列,根據 edition 升序排列
// 把 $data 作為最后一個參數,以通用鍵排序
array_multisort(array_column($data,'volume'), SORT_DESC, array_column($data,'edition'), SORT_ASC, $data);
?>
