如何从数组中找到元素级别

时间:2014-03-10 16:01:08

标签: php arrays

我有一个像这样的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)是根元素。

2 个答案:

答案 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数组的索引。 确保可以计算每个级别