PHP-遍历嵌套数组并增加foreach

时间:2019-07-05 13:39:02

标签: php arrays

我有一个巨大的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']);
            }
          }
        }
      }
    }
  }
}

}

2 个答案:

答案 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'] );