根据二维数组中某个字段来排序

<?phpfunction 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);
结果
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()的特性,直接建立了这种映射。
以上是 根据二维数组中某个字段来排序 的全部内容, 来源链接: utcz.com/z/515007.html




