我如何对多维数组进行排序或迭代,使其形成树状结构(每个父元素之后的所有子元素),例如:
Parent #1
Child #1
Child #2
Parent #2
Child #1
Parent #3
Child #1
Child #2
这是一个示例数组。请务必注意,数组最初未排序(项目及其子项不以任何特定顺序出现)。
Array (
[0] => Array
(
[id] => 1
[content] => Parent #1
)
[1] => Array
(
[id] => 2
[content] => Parent #2
)
[2] => Array
(
[id] => 3
[content] => Parent #3
)
[3] => Array
(
[parent] => 1
[content] => Child #1
)
[4] => Array
(
[parent] => 1
[content] => Child #2
)
[5] => Array
(
[parent] => 3
[content] => Child #2
)
[6] => Array (
[parent] => 3
[content] => Child #1
)
[7] => Array (
[parent] => 2
[content] => Child #1
)
)
如果我完全错了或者问一些不可能的事情,我道歉。我尝试过使用usort但是我无法找出正确的逻辑。
答案 0 :(得分:0)
<?php
$array = array(
array(
'id' => 1,
'num' => 6,
'color' => 'green'
),
array(
'id' => 4,
'num' => 5,
'color' => 'red'
)
);
$nk = new_sort($array,'color','asc');
print_r($nk);
$nk = new_sort($array,'num','desc');
print_r($nk);
function new_sort($array_data, $key, $orderby = 'asc')
{
$na = $rv = array();
foreach ($array_data as $k => $n) {
$na[$k] = $n[$key];
}
$orderby == 'asc' ? asort($na) : arsort($na);
foreach ($na as $nk => $nv) {
$rv[] = $array_data[$nk];
}
return $rv;
}