如何循环N级子数组-PHP
我有类别和子类别。我有这种类型的数组 有人能帮我怎么循环n级吗如何循环N级子数组-PHP,php,smarty,Php,Smarty,我有类别和子类别。我有这种类型的数组 有人能帮我怎么循环n级吗 Array ( [0] => Array ( [question_title] => hello. [id] => 1 [step] => 1 [Children] => Array ( ) )
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
你走得更深,否则你走下一个数组?