如何按「訂單」鍵的值對該數組排序? 即便這些值當前是連續的,也不會老是如此。 php
Array ( [0] => Array ( [hashtag] => a7e87329b5eab8578f4f1098a152d6f4 [title] => Flower [order] => 3 ) [1] => Array ( [hashtag] => b24ce0cd392a5b0b8dedc66c25213594 [title] => Free [order] => 2 ) [2] => Array ( [hashtag] => e7d31fc0602fb2ede144d18cdffd816b [title] => Ready [order] => 1 ) )
function aasort (&$array, $key) { $sorter=array(); $ret=array(); reset($array); foreach ($array as $ii => $va) { $sorter[$ii]=$va[$key]; } asort($sorter); foreach ($sorter as $ii => $va) { $ret[$ii]=$array[$ii]; } $array=$ret; } aasort($your_array,"order");
我使用這個功能: 數組
function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) { $sort_col = array(); foreach ($arr as $key=> $row) { $sort_col[$key] = $row[$col]; } array_multisort($sort_col, $dir, $arr); } array_sort_by_column($array, 'order');
我一般使用usort ,並傳遞本身的比較函數。 在這種狀況下,這很是簡單: 函數
function compareOrder($a, $b) { return $a['order'] - $b['order']; } usort($array, 'compareOrder');
嘗試使用usort ,若是您仍然使用PHP 5.2或更早版本,則必須首先定義一個排序函數: spa
function sortByOrder($a, $b) { return $a['order'] - $b['order']; } usort($myArray, 'sortByOrder');
從PHP 5.3開始,您能夠使用匿名函數: .net
usort($myArray, function($a, $b) { return $a['order'] - $b['order']; });
最後,在PHP 7中,您能夠使用spaceship運算符 : code
usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });
要將其擴展到多維排序,若是第二個/第三個排序元素爲零,請參考第二個/第三個排序元素-下文將詳細說明。 您也能夠使用它對子元素進行排序。 排序
usort($myArray, function($a, $b) { $retval = $a['order'] <=> $b['order']; if ($retval == 0) { $retval = $a['suborder'] <=> $b['suborder']; if ($retval == 0) { $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder']; } } return $retval; });
若是須要保留鍵關聯,請使用uasort()
-請參見手冊中數組排序功能的比較 ip
要使用「 title」鍵的值對數組進行排序,請使用: 字符串
uasort($myArray, function($a, $b) { return strcmp($a['title'], $b['title']); });
strcmp比較字符串。 get
uasort()維護定義的數組鍵。