當你有一個多維陣列需要做排序時,有一個像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
更多 PHP 相關文章 列表:https://richarlin.tw/blog/php/
Pingback: PHP - 文章列表 - RicharLin.Tw