确定 foreach 循环处于最后一次迭代的最简单方法

4

4个回答

5

我会这样处理:增加一个变量并将该变量与数组的大小 (count()) 进行比较:

$i = 0;
$c = count($array);

foreach($array as $key => $value) {
    $i++;
    if ($i == $c) {
        // last iteration
    }
    else {
        // do stuff
    }
}

这显然不是最有效的方法。

这样的东西有什么用处,如果我们已经有了for循环? - UmmaGumma
@Ashot:'such stuff' 的目的是回答问题。我假设,也许有点不公平,OP 知道使用 for 循环,但出于某种特定原因选择不使用。 - David Thomas

1

有两种方法可以做到这一点:

  1. 在进入循环之前确定数组的最后一个值,并在每次迭代中将当前项与先前识别的项进行比较。
  2. 使用 for 循环或使用 foreach 循环的递增变量来检查 if(count($someArr) - 1 == $currentIteration)。如果是,则执行该逻辑。

0

嗯...使用这个:

 $i =0;
 $c = count($employeeAges);
    foreach( $employeeAges as $key => $value){
    if($c-$i<=1){
          //DO SOMETHING
        }else{
          //default for other loops
        }
        i++;
     }

0

在我看来,对于这种情况,最好的方法是使用 for 循环。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接