这是我的代码片段。我知道通常建议不要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
将用 push 的值重复if ($level->post_parent)
,我可以看到该if
语句正在解析为 true,并且array
正在被推送,但是foreach
不会重复,只运行一次。
有谁知道我如何递归地继续我的 foreach 直到$level->post_parent
解析为假?