PHP 打印无限类别树

  • 本文关键字:无限 打印 PHP php
  • 更新时间 :
  • 英文 :


我正在尝试打印具有无限子类别的类别列表。

例:

    [
        [
            'categoryName' => 'Category1',
            'categoryUrl' => 'category-1',
            'subcategories' => [
                [
                    'categoryName' => 'Subcategory 1',
                    'categoryUrl' => 'sucbategory-1',
                    'subcategories' => [
                        [
                            'categoryName' => 'Subcategory subcategory 1',
                            'categoryUrl' => 'sucbategory-subcategory-1',
                            'subcategories' => [
                                [
                                    '....'
                                ]
                            ]
                        ]
                    ],
                    [
                        'categoryName' => 'Subcategory 2',
                        'categoryUrl' => 'sucbategory-12',
                    ]
                ]
            ]
        ]
    ]

我正在尝试用foreach内部foreach,等等...然后我意识到我不知道类别树会有多少个级别。

类别1->子类别1->子类别子类别1->子类别...1->??

这称为递归。这个想法是这样的:

function printLeafs($node){
  echo $node->title;
  $leafs = getLeafs($node);
  foreach ($leafs as $leaf){
    printLeafs($leaf);
  }
}

这将使用递归打印所有内容。

function recurse($array) {
    foreach( $array as $one ) {
       echo $one['categoryName'] . '->' ;
       echo $one['categoryUrl'] . '->' ;
       if( isset($one['subcategories']) ) {
        if( is_array($one['subcategories'])) {
           recurse($one['subcategories']) ;
       }

       }
    }
};
recurse($array);

但是在您的代码中,我注意到了一个问题,以下内容看起来放错了地方。在这种情况下,您的类别名称没有父子类别。如果这是一个错字,上述内容将起作用。否则不会。

'categoryName' => 'Subcategory 2',
'categoryUrl' => 'sucbategory-12',

最新更新