按值對多維數組進行排序
在多維數組中,您可能會遇到需要根據值對其元素進行排序的需求特定鍵的值。例如,考慮以下陣列:
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 ) )
按「order」鍵排序
要按「order」鍵對陣列進行排序,您可以使用usort()函數。以下是其用法的全面細分:
PHP 5.2 或更早版本:
先定義一個排序函數:
function sortByOrder($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; }
PHP 5.3及更高版本:
使用匿名函數:
usort($myArray, function($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; });
PHP 7:
利用太空船運算子:
usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });
利用太空船運算子:
PHP 7.4:
usort($myArray, fn($a, $b) => $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() 而不是 usort()。以上是如何在 PHP 中按值對多維數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!