[PHP] array_multisort 陣列排序功能

當你有一個多維陣列需要做排序時,有一個像MySQL的ORDER BY使用方式的指令可以使用,
他可以利用其中一個陣列的值來進行排序,只需要使用array_multisort就可以輕鬆解決~

基本上這個指令的使用方法就像是這樣

 array_multisort(陣列1, [陣列1排序方式,](選填) 陣列2)

我們要使用陣列1去排序,排序之後把陣列2也按照一樣的方式進行排序 (請參考下方範例)

排序方法:

由小到大排序:SORT_ASC  (當你選擇不填寫時,則自動已這個選項為主)
由大到小排序:SORT_DESC


 

範例1 – 基本應用:

$array1 = array(60, 48, 100, 90, 85); //分數
$array2 = array(1, 7, 3, 5, 9); //座號

array_multisort($array1, $array2);

print_r($array1); // Array( [0] => 48 [1] => 60 [2] => 85 [3] => 90 [4] => 100 )
print_r($array2); // Array( [0] => 7 [1] => 1 [2] => 9 [3] => 5 [4] => 3 )

在array_multisort的第一個值放入要排序的陣列(此處放入$array1,作為以分數排序),
第二個值放入跟隨第一個值排序結果的排序 (此處放入$array2,作為跟隨分數來排序座號)。

當我們都不輸入選填參數時,這個語法會自動由小到大排序,如果需要反向排序請看範例2

 

範例2 – 加入選填參數:

$array1 = array(60, 48, 100, 90, 85); //分數
$array2 = array(1, 7, 3, 5, 9); //座號

array_multisort($array1, SORT_DESC, $array2);

print_r($array1); // Array( [0] => 100 [1] => 90 [2] => 85 [3] => 60 [4] => 48 )
print_r($array2); // Array( [0] => 3 [1] => 5 [2] => 9 [3] => 1 [4] => 7 )

 

當我們在$array1的後面加上一個「SORT_DESC」,則$array1就會改由大到小的方式排序,同樣的$array2也會採依然會跟隨$array1的順序一起進行變動。

☆日期格式也可以直接排序哦!!
( 如果你是要排序時間,只要是PHP認定的時間格式都是可以直接進行排序的哦)

 

PHP.NET : http://php.net/manual/en/function.array-multisort.php

發表迴響