数组:
array(
'354' => array(
'parent' => 0
),
'370' => array(
'parent' => 0
),
'420' => array(
'parent' => 354
),
)
如何移动所有具有'parent'值的元素!= 0,就在该键与该父值相同的元素之后?
例如,上面有420个键的元素需要使用354键...
答案 0 :(得分:1)
在一般情况下,这是不可能的。在你的例子中它会起作用。
但这是另一个例子:
Number | Parent
10 | 1
11 | 1
100 | 10
101 | 10
102 | 10
1000 | 100
1001 | 100
所以你希望所有三行100
,101
,102
直接来到行10
之后,这是不可能的。
在行100
和101
之间,您可能需要行1000
和1001
,因为他们的父级是100
。
<强> [更新] 强>
所以仍有这些问题:
答案 1 :(得分:0)
也许你正在寻找一种让平面阵列有某种层次结构的方法?
这是一个非常简单的案例,可以做到这一点,因为你的孩子总是拥有比父母更高的身份。
<?php
$array = array(
'354' => array(
'parent' => 0
),
'370' => array(
'parent' => 0
),
'420' => array(
'parent' => 354
),
'550' => array(
'parent' => 420
),
);
/**
*
* This function will convert a flat array with elements to the proper hierarchy structure
* @param array $array
*/
function hierarchy(&$array) {
arsort($array);
foreach($array as $key => $value)
{
if($value['parent'])
{
$array[$value['parent']]['children'][$key] = $value;
unset($array[$key]);
}
}
asort($array);
return $array;
}
(print '<pre>' . print_r(hierarchy($array), true) . '</pre>');
下载一个测试用例: