我有一个巨大的JSON数组,其中包含类别,子类别,子子类别等。
如果没有我的控制,它将来可能会继续增长,所以想知道如何最好地继续遍历每个类别及其[子元素]直到没有结果。
到目前为止,我的方法肯定太基础了吗?想知道理想情况下哪种方法更好。
foreach( $json['results'] as $parent_cat ) {
// var_dump($parent_cat['path']);
foreach( $parent_cat['children'] as $sub_cat ) {
// var_dump($sub_cat['path']);
foreach( $sub_cat['children'] as $sub_sub_cat ) {
// var_dump($sub_sub_cat['path']);
foreach( $sub_sub_cat['children'] as $sub_sub_sub_cat) {
// var_dump($sub_sub_sub_cat['path']);
foreach( $sub_sub_sub_cat['children'] as $sub_sub_sub_sub_cat) {
// var_dump($sub_sub_sub_sub_cat['path']);
foreach( $sub_sub_sub_sub_cat['children'] as $sub_sub_sub_sub_sub_cat) {
// var_dump($sub_sub_sub_sub_sub_cat['path']);
foreach( $sub_sub_sub_sub_sub_cat['children'] as $sub_sub_sub_sub_sub_sub_cat) {
// var_dump($sub_sub_sub_sub_sub_sub_cat['path']);
foreach( $sub_sub_sub_sub_sub_cat['children'] as $sub_sub_sub_sub_sub_sub_cat) {
var_dump($sub_sub_sub_sub_sub_sub_cat['path']);
}
}
}
}
}
}
}
}
答案 0 :(得分:1)
如果要获取路径,请使用array_walk_recursive代替所有这些麻烦,
util-foobar
答案 1 :(得分:1)
递归是处理嵌套数据的一种典型方法。
<?php
class ResultsDumper {
public function dumpRecursive( array $parent_cat ) {
var_dump( $parent_cat['path'] );
if ( isset( $parent_cat['children'] ) ) {
foreach ( $parent_cat['children'] as $sub_cat ) {
// Notice how this function is calling itself
$this->dumpRecursive( $sub_cat );
}
}
}
}
$resultsDumper = new ResultsDumper();
$resultsDumper->dumpRecursive( $json['results'] );