[英]Multidimentional associative array sorting by value
我有需要按值排序的关联数组:
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");
}
但没有成功。 我该怎么做?
按照建议通过引用传递参数解决了这个问题。
与:
foreach ($result_array as $group => &$values) {
uasort($values, "cmp");
}
要在foreach
循环中修改数组,您必须像这样通过引用传递键/值
foreach ($result_array as &$group => &$values) {
uasort($values, "cmp");
}
或使用array walk()
(根据@zerkms,这比较慢,所以可能是个坏主意)
array_walk($array,
function(&$row){
uasort($row, "cmp");
}
);
我有需要按值排序的关联数组:
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");
}
但是没有成功。 我该怎么做?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.