Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何循环N级子数组-PHP_Php_Smarty - Fatal编程技术网

如何循环N级子数组-PHP

如何循环N级子数组-PHP,php,smarty,Php,Smarty,我有类别和子类别。我有这种类型的数组 有人能帮我怎么循环n级吗 Array ( [0] => Array ( [question_title] => hello. [id] => 1 [step] => 1 [Children] => Array ( ) )

我有类别和子类别。我有这种类型的数组

有人能帮我怎么循环n级吗

Array
(
    [0] => Array
        (
            [question_title] => hello.
            [id] => 1
            [step] => 1
            [Children] => Array
                (
                )

        )

    [1] => Array
        (
            [question_title] => bye
            [id] => 2
            [step] => 1
            [Children] => Array
                (
                )

        )

    [2] => Array
        (
            [question_title] => gtg
            [id] => 3
            [step] => 1
            [Children] => Array
                (
                )

        )

    [3] => Array
        (
            [question_title] => cya
            [id] => 4
            [step] => 1
            [Children] => Array
                (
                )

        )

    [4] => Array
        (
            [question_title] => not sure
            [id] => 5
            [step] => 1
            [Children] => Array
                (
                )

        )

    [5] => Array
        (
            [question_title] => will see 
            [id] => 6
            [step] => 1
            [Children] => Array
                (
                )

        )

    [6] => Array
        (
            [question_title] =>idk
            [id] => 7
            [step] => 2
            [Children] => Array
                (
                )

        )

    [7] => Array
        (
            [question_title] => mayebthis 
            [id] => 8
            [step] => 2
            [Children] => Array
                (
                )

        )

    [8] => Array
        (
            [question_title] => maybe this one as well
            [id] => 9
            [step] => 2
            [Children] => Array
                (
                    [0] => Array
                        (
                            [question_title] => maybe this one too
                            [id] => 10
                            [step] => 2
                            [Children] => Array
                                (
                                )

                        )

                )

        )

    [9] => Array
        (
            [question_title] => and this
            [id] => 11
            [step] => 2
            [Children] => Array
                (
                    [0] => Array
                        (
                            [question_title] => or this
                            [id] => 12
                            [step] => 2
                            [Children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [question_title] =>or here too
                            [id] => 13
                            [step] => 2
                            [Children] => Array
                                (
                                    [0] => Array
                                        (
                                            [question_title] => wait i am also here
                                            [id] => 14
                                            [step] => 2
                                            [Children] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [question_title] => me as well
                                            [id] => 15
                                            [step] => 2
                                            [Children] => Array
                                                (
                                                )

                                        )

                                    [2] => Array
                                        (
                                            [question_title] => me me scream 
                                            [id] => 16
                                            [step] => 2
                                            [Children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [10] => Array
        (
            [question_title] => outside here
            [id] => 17
            [step] => 2
            [Children] => Array
                (
                )

        )

    [11] => Array
        (
            [question_title] => outisde here too
            [id] => 18
            [step] => 2
            [Children] => Array
                (
                )

        )

)
我在主数组中循环,但我不知道如何循环子数组,因为可能还有很多子数组

{foreach $question_master_array as $key => $val}
          {if $question_master_array[$key]['step'] == 2}
            <li><input type="checkbox" name="step1_question_{$question_master_array[$key]['question_id']}">{$question_master_array[$key]['question_title']}</li>
            {if  $question_master_array[$key]['Children']|@count gt 0}
                ... some stuff here ...
            {/if} 
          {/if}
        {/foreach} 
{foreach$question\u master_数组as$key=>$val}
{如果$question\u master\u数组[$key]['step']==2}
  • {$question\u master\u数组[$key]['question\u title']}
  • {if$question_master_数组[$key]['Children'].@count gt 0} ... 这里有些东西。。。 {/if} {/if} {/foreach}

    因为我不能通过对子数组应用键来实现静态,因为它可以有n级。这是我的tpl文件,因此我无法编辑以这种数据格式带来的查询。

    您需要递归地遍历数组

    例如:

    function recurSearch($array, $depth = 0)
    {
        echo ('Current depth : ' . $depth);
        foreach ($array as $item)
        {
            echo ('id : ' . $item['id']);
            echo ('question title : ' . $item['question_title']);
            echo ('step : ' . $item['step']);
    
            if (count($item['Children']) > 0)
            {
                echo 'child : ';
                echo '{';
                /*
                 * If $item['Children'] isn't empty,
                 * the function will be called again
                 * using $item['Children'] as main array
                 * That function will keep being called until $item['Children'] is empty
                 */
                recurSearch($item['Children'], $depth + 1);
                echo '}';
            }
            else
            {
                echo ('child : no child');
            }
        }
    }
    

    试着做一个递归函数,如果
    count($array['children'])>0
    你走得更深,否则你走下一个数组?