在循环时推入阵列

时间:2012-07-11 12:36:31

标签: php arrays loops foreach

这是我的代码片段。我理解通常建议在循环时修改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?

1 个答案:

答案 0 :(得分:2)

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

foreach (&$levels as $level) {
   .....
}