猿问

递归函数的返回结果

我得到了一个当前echo结果的递归函数。我希望这个函数返回结果并使用foreach内部标记循环它们。


我知道我应该对每个数组使用某种迭代来获得我想要的结果,但失败了。目前我的代码看起来像这样(尝试迭代):


public static function recursiveChildCategory($categories = array(), $depth = 0, $i = 0) {

    $ca = [];


    // Loop through categories

    foreach($categories as $key => $category){

        echo str_repeat("  ", $depth);

        echo "<a href='".implode('/', $category['breadcrumb'])."'>{$category['title']}</a>";

        echo '<br>';


       $ca[$i] = [

           'id' => $category['id'],

           'title' => $category['title'],

       ];


       if(isset($category['child'])) {

           // Loop

           self::recursiveChildCategory($category['child'], $depth + 1, $i++);

       }

   }

   return $ca;

}

和传入数组到函数:


Array ( 

    [0] => Array ( 

        [id] => 7 

        [title] => Deserts 

        [slug] => deserts 

        [child] => Array ( 

            [0] => Array ( 

                [id] => 8 

                [title] => Space 

                [slug] => space 

                [child] => Array ( 

                    [0] => Array ( 

                        [id] => 

                        [title] => 

                        [slug] => 

                        [child] => Array ( ) 

                    ) 

                ) 

            ) 

        ) 

    ) 

)

目前它只返回第一级子类别“沙漠”,但不返回“空间”。


作为期望的结果,我希望函数返回所有类别$depth和多个子类别的无限路径(与当前echo做的工作相同)。


潇潇雨雨
浏览 163回答 1
1回答
随时随地看视频慕课网APP
我要回答