我正在尝试打印具有无限子类别的类别列表。
例:
[
[
'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',