我有一个像这样的id和parent_id的数组
$element=new array(
[0]=>array(1,0), --------level 1
[1]=>array(2,0), -------level 1
[2]=>array(3,1), ------level 2
[3]=>array(4,1), ------level 2
[4]=>array(5,1), ------level 2
[5]=>array(6,2), ------level 2
[6]=>array(7,3), ------level 3
[7]=>array(8,2), ------level 2
[8]=>array(9,3), ------level 3
[9]=>array(10,6), ------level 3
[10]=>array(11,6), ------level 3
);
这是我的数组,在内部数组中,第一个元素是数组的id,第二个元素是父元素的id。
现在我想从root中找到每个元素的级别。
假设零(0)是根元素。
答案 0 :(得分:0)
您可以使用递归方法。我假设外部数组中索引N
处的项始终具有标识N+1
。如果没有,您首先必须搜索具有匹配ID的项目,否则逻辑的其余部分应该相同。
<?php
function findLevel($id) {
$item = $element[$id-1]; //If my assumption (above) is incorrect,
// you'll need to replace this with an appropriate
// search function, which could be as simple as
// a loop through the array.
$parent = $item[1];
if ($parent == 0) {
//Parent is root. Assuming root is level 0, then
// this item is level 1.
return 1;
}
return 1 + findLevel($parent);
?>
答案 1 :(得分:0)
$parent_id = n;
$level = 0;
while($parent_id != 0){
$inner_array = $element[$parent_id];
$parent_id = $inner_array[1];
$level ++;
}
让我们试试这个,你最初将$ parent_id设置为你想知道级别的$ element数组的索引。 确保可以计算每个级别