我有一个关联数组,我需要按值进行索引:
Array
(
['group_1'] => Array
(
['key_1'] => Array
(
['field_1'] = 'someval',
['order'] = 2
)
['key_2'] => Array
(
['field_1'] = 'someval',
['order'] = 0
)
)
['group_2'] => Array
(
...
)
)
我正在尝试使用usort()按'order'字段对每个'group_N'数组进行排序:
function cmp($a, $b) {
if ($a['order'] == $b['order']) {
return 0;
}
return ($a['order'] < $b['order']) ? -1 : 1;
}
foreach ($result_array as $group => $values) {
uasort($values, "cmp");
}
但没有成功。 我该怎么办?
答案 0 :(得分:0)
按建议通过引用传递参数解决了问题。
出色地工作:
foreach ($result_array as $group => &$values) {
uasort($values, "cmp");
}
答案 1 :(得分:0)
修改foreach
循环中的数组,必须通过引用传递key / val,如此
foreach ($result_array as &$group => &$values) {
uasort($values, "cmp");
}
或使用array walk()
(根据@zerkms这个比较慢,所以可能是个坏主意)
array_walk($array,
function(&$row){
uasort($row, "cmp");
}
);
答案 2 :(得分:-1)
尝试使用以下逻辑。对我来说它有效。
usort($arr, function($a, $b) {
return $a['order'] - $b['order']});