这是我的代码片段。我理解通常建议在循环时修改array
,但在这种情况下,我认为这是正确的做法并节省资源。
$levels = array($post);
foreach ($levels as $level) {
$next_sibling = get_next_sibling_page($level);
if ($next_sibling) {
$next_page = $next_sibling;
break 1;
} else if ($level->post_parent) {
array_push($levels, get_page($level->post_parent));
}
}
我的想法是foreach
会重复推送值if ($level->post_parent)
,我可以看到if
语句正在解析为true而array
正在被推送然而,foreach
没有重申,只运行一次。
在$level->post_parent
解析为假之前,有谁知道如何递归继续我的foreach?
答案 0 :(得分:2)
通过引用修改在foreach传递数组中使用的数组。
foreach (&$levels as $level) {
.....
}