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

muf*_*fin 12 php foreach loops

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

Ja͢*_*͢ck 17

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

$count = count($array);

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

    echo "$key = $val\n";
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • @muffin这个问题实际上是为什么最后一个元素应该被排除在外...如果有关于该值的特殊内容,也许它不应该存在. (2认同)

Dec*_*ler 5

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

如果您的数组是顺序为零索引的数组,则可以执行以下操作:

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

    /* do something with $value */
}
Run Code Online (Sandbox Code Playgroud)

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

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

    /* do something with $value */
}
Run Code Online (Sandbox Code Playgroud)