【问题标题】:push into array while it is being looped在循环时推入数组
【发布时间】:2012-07-11 01:55:54
【问题描述】:

这是我的代码的 sn-p。我了解通常建议不要在循环时修改 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 没有重复一遍,只运行一次。

有谁知道我如何递归地继续我的 foreach 直到 $level->post_parent 解析为 false?

【问题讨论】:

  • “有谁知道我如何递归地继续我的 foreach..” - 使用递归
  • @KarolyHorvath 你知道一些我不知道的事情吗?

标签: php arrays loops foreach


【解决方案1】:

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

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

【讨论】:

  • Parse error: syntax error, unexpected '&',我已经看到将值作为引用传递,但没有将数组作为引用传递的示例,
猜你喜欢
  • 2013-10-18
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 2012-02-18
  • 2021-03-31
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多