我如何根据其中一个值对关联数组进行排序?
例如:
$arr = array(
'ted' => array( 'age' => 27 ),
'bob' => array( 'age' => 18 ),
'jay' => array( 'age' => 24 )
);
$arr = ???
foreach ($arr as $person)
echo $person['age'], ', ';
所以输出是:
18, 24, 27
这是一个过于简单的例子,只是为了证明我的问题。
我仍然要求 $arr
是一个关联数组。
最佳答案
uasort()
function 允许您指定一个回调函数,它将负责在两个元素之间进行比较——因此,如果您实现了正确的回调函数,应该会做得很好。
在这里,您必须实现一个回调函数,该函数将接收两个数组——并比较 age
项:
function callback($a, $b) {
if ($a['age'] > $b['age']) {
return 1;
} else if ($a['age'] < $b['age']) {
return -1;
}
return 0;
}
在以下代码部分使用该函数:
$arr = array(
'ted' => array( 'age' => 27 ),
'bob' => array( 'age' => 18 ),
'jay' => array( 'age' => 24 )
);
uasort($arr, 'callback');
var_dump($arr);
你会得到这个结果数组:
array
'bob' =>
array
'age' => int 18
'jay' =>
array
'age' => int 24
'ted' =>
array
'age' => int 27
关于php - 如何使用 PHP 中包含的关联数组的子字段对关联数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498718/