1,一種取巧的辦法php
<?php function sortByField(array $arr, string $field, int $asc = 1) { if (count($arr) <= 1 || empty($field)) { return $arr; } $arr = array_column($arr, null, $field); $asc ? sort($arr) : rsort($arr); return $arr; } $a = [ [ 'a' => 1, 'b' => '111' ], [ 'a' => 0, 'b' => '000' ], [ 'a' => 3, 'b' => '333' ], ]; $res = sortByField($a, 'a'); var_dump($res);
結果code
array(3) { [0]=> array(2) { ["a"]=> int(0) ["b"]=> string(3) "000" } [1]=> array(2) { ["a"]=> int(1) ["b"]=> string(3) "111" } [2]=> array(2) { ["a"]=> int(3) ["b"]=> string(3) "333" } }
還有一種是手動去創建 field的值 和 value 之間的映射,再對field的值進行排序,而後根據排序和映射,獲取到結果。排序
上面這種方法利用了array_column()的特性,直接創建了這種映射。string