显示具有树结构的数组及其前面的每个分支

时间:2017-04-21 13:35:57

标签: php arrays

我有一个数组,每个元素都有无限的子元素。例如,每个孩子都可以拥有自己的孩子。 现在我正在检查孩子的每个元素并对它们做一个foreach,但我想使用递归函数。 我面临的问题是,如何在每个树级别打印所有前面的分支。

我的数组结构如下所示:

   [ 0 : {
           Name : Animals,
           Children : [
             0 : { Name : Dogs,
                   Children : [
                      0 : { Name : Retrievers,
                            Children : [ 
                                0 : { Name : Golden Retriever , 
                                      Children : [] 
                                     }
                                 ]
                   ] 
                  }
               ]
         }
   ]

我不知道这棵树会有多少层次。

我想要实现的是这样的显示:

动物

动物>狗

动物>狗>猎犬

动物>狗>检索器>金毛猎犬

我可以在https://developers.google.com/adwords/api/docs/appendix/verticals

找到我想要实现的目标示例

有没有人知道从哪里开始或面临类似的问题?任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

您可以使用RecursiveIteratorIteratorRecursiveArrayIterator执行此操作:

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($tree));

$names = [];
foreach ($iterator as $name) {
    // As depth will be increasing by 2, starting from 1,
    // we need to devide in half and floor. This way our $names array
    // will have normal sequantial indexes.
    $depth = floor($iterator->getDepth() / 2);

    $names[$depth] = $name;

    echo implode(' > ', array_slice($names, 0, $depth + 1)), PHP_EOL;
}

这是working demo