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

编程

<?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);

结果

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

回到顶部