我有一个数组,每个元素都有无限的子元素。例如,每个孩子都可以拥有自己的孩子。 现在我正在检查孩子的每个元素并对它们做一个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
找到我想要实现的目标示例有没有人知道从哪里开始或面临类似的问题?任何帮助表示赞赏
答案 0 :(得分:1)
您可以使用RecursiveIteratorIterator
和RecursiveArrayIterator
执行此操作:
$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。