在迭代进行到一半时执行更改代码


perform change code in a foreach halfway through iterations

我正在尝试创建一个 php foreach 语句,该语句为前 5 次迭代输出不同的代码,然后为其余部分执行不同的输出。

我找到了这个片段,它在给定的限制下中断,但我如何从另一个 foreach 循环的最后一次迭代继续? 无论如何,这可能不是最好的方法。

 $i = 0;
foreach ($arr as $k => $v) {
    /* Do stuff */
    if (++$i == 2) break;
}

这可能吗? 我该怎么做?

谢谢!泽姆

您可以使用array_slice来实现此目的:

foreach (array_slice($arr, 0, 5, true) as $k => $v) {
    /* Do stuff 1-5 */
}
foreach (array_slice($arr, 5, null, true) as $k => $v) {
    /* Do stuff 6-end */
}

你在寻找类似的东西吗?

$i = 0;
foreach ($var as $k => $v) {
    if ($i < 5) {
        // do something here for the first five iterations
    }
    else {
        // do something else here for further iterations
    }
    $i++;
}
$i = 0;
foreach ($arr as $k => $v) {
    if ($i < 5) { 
        /* do stuff */
    } else { 
        /* other stuff */
    }
    $i++;
}

我假设你的数组不是关联的,并且$k将是数字索引。如果不是这种情况,您将需要$i。

foreach ($arr as $k => $v) {
    if ($k < 5) {
        Do stuff
    } else {
        Do other stuff
    }
}