我的数组结构看起来像这样。
Array
(
[category1] => Array
(
[2694] => Array
(
[node_name] => "B"
)
[2695] => Array
(
[node_name] => "A"
)
[2696] => Array
(
[node_name] => "C"
)
)
)
我想要父节点数字按节点名称。预期的结果应该是这样的。
Array
(
[category1] => Array
(
[2695] => Array
(
[node_name] => "A"
)
[2694] => Array
(
[node_name] => "B"
)
[2696] => Array
(
[node_name] => "C"
)
)
)
我尝试使用funcion
进行多重排序和uasortfunction cmp($a, $b) {
return $a['node_name'] > $b['node_name'] ? 1 : -1;
}
但是应该考虑多个类别,所以我尝试迭代类别并在内部元素上使用uasort或multisort。我不确定应该如何处理这个问题,所以我想知道是否有人有解决嵌套数组的经验,并根据under元素的名称对特定级别进行排序。
任何帮助将不胜感激。
答案 0 :(得分:0)
你正在做我想要的正确的事。
<?php
$cats = array(
'category1' => array(
2694 => array('node_name' => 'B'),
2695 => array('node_name' => 'A'),
2696 => array('node_name' => 'C'),
),
'category2' => array(
2691 => array('node_name' => 'T'),
2692 => array('node_name' => 'S'),
2693 => array('node_name' => 'A'),
)
);
function cmp($a, $b) {
return $a['node_name'] > $b['node_name'] ? 1 : -1;
}
foreach ($cats as $category => $data) {
uasort($data, 'cmp');
$cats[$category] = $data;
}
var_dump($cats);
输出:
array(2) {
["category1"]=>
array(3) {
[2695]=>
array(1) {
["node_name"]=>
string(1) "A"
}
[2694]=>
array(1) {
["node_name"]=>
string(1) "B"
}
[2696]=>
array(1) {
["node_name"]=>
string(1) "C"
}
}
["category2"]=>
array(3) {
[2693]=>
array(1) {
["node_name"]=>
string(1) "A"
}
[2692]=>
array(1) {
["node_name"]=>
string(1) "S"
}
[2691]=>
array(1) {
["node_name"]=>
string(1) "T"
}
}
}