PHP:如何跳过foreach循环中的最后一个元素

时间:2014-02-20 06:28:37

标签: php loops foreach

我有一个对象数组,php中的任何数组。 我如何跳过foreach迭代中的最后一个元素?

5 个答案:

答案 0 :(得分:16)

使用变量来跟踪到目前为止已迭代的元素数量,并在到达结尾时切断循环:

$count = count($array);

foreach ($array as $key => $val) {
    if (--$count <= 0) {
        break;
    }

    echo "$key = $val\n";
}

如果你不关心内存,你可以迭代一个缩短的数组副本:

foreach (array_slice($array, 0, count($array) - 1) as $key => $val) {
    echo "$key = $val\n";
}

答案 1 :(得分:4)

有多种方法可以做到这一点。

如果你的数组是一个顺序零索引的数组,你可以这样做:

for( $i = 0, $ilen = count( $array ) - 1; $i < $ilen; $i++ )
{
    $value = $array[ $i ];

    /* do something with $value */
}

如果您的数组是关联数组,或者不是顺序零索引,则可以执行以下操作:

$i = 0;
$ilen = count( $array );
foreach( $array as $key => $value )
{
    if( ++$i == $ilen ) break;

    /* do something with $value */
}

答案 2 :(得分:2)

如果您不想删除带有pop的最后一个数组条目,可以像这样删除它

$array = array('v1','v2','v3',...)

$counter = 1;

foreach($array as $value)
{
    //do your thing in loop

    if($counter == count($array)) continue; // this will skip to next iteration if last element encountered.
    $counter++;
}

答案 3 :(得分:0)

$count = count($array);
$i=0;
foreach ($arr as &$value) 
{
    $i++;
    if($i==($count-1))
    {
      echo 'skip';
    }
    else
    {
      echo $value;
    }
}

答案 4 :(得分:0)

你要做的事情将会破坏foreach循环的目的。它旨在遍历整个阵列,使我们的工作变得轻松。

for ex:您可以在php中使用 COUNT 函数获取数组大小,然后可以使用for循环并将限制设置为arraysize-2,因此最后一个数组将被省略