3

这是我的代码片段。我知道通常建议不要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解析为假?

4

1 回答 1

2

通过引用修改在 foreach 传递数组中使用的数组。

foreach (&$levels as $level) {
   .....
}
于 2012-07-11T12:43:41.497 回答