根據二維數組中某個字段來排序

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

相關文章
相關標籤/搜索