PHP 二維陣列按鍵值排序
阿新 • • 發佈:2018-12-19
PHP 中 array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成一個表的列並以行來排序,第一個陣列是要排序的主要陣列。陣列中的行(值)比較為相同的話就按照下一個輸入陣列中相應值的大小來排序,依此類推。
但是如果需要排序的陣列是一個二維陣列,需要按照陣列的鍵值排序,如下面這個二維陣列,需要按照 sort 鍵名來排序,那麼array_multisort() 就無法直接實現了:
$arr = array( array( 'sort' => 3, 'a' => 'a', 'b' => 'b' ), array( 'sort' => 5, 'a' => 'a', 'b' => 'b' ), array( 'sort' => 1, 'a' => 'a', 'b' => 'b' ) );
但是先把排序的列抽取出來,作為第一個引數傳給 array_multisort,就可以實現上面的二維陣列的排序:
function _multi_array_sort($multi_array, $sort_key, $sort = SORT_DESC) { if (is_array($multi_array)) { foreach ($multi_array as $row_array) { if (is_array($row_array)) { $key_array[] = $row_array[$sort_key]; } else { return FALSE; } } } else { return FALSE; } array_multisort($key_array, $sort, $multi_array); return $multi_array; } var_dump(_multi_array_sort($arr, 'sort'));