Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何跳过foreach循环中的最后一个元素_Php_Loops_Foreach - Fatal编程技术网

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

PHP:如何跳过foreach循环中的最后一个元素,php,loops,foreach,Php,Loops,Foreach,我有一个对象数组,php中的任何数组。 如何跳过foreach迭代中的最后一个元素?您试图做的事情将破坏foreach循环的目的。这意味着在整个阵列中循环,使我们的工作变得简单 $count = count($array); $i=0; foreach ($arr as &$value) { $i++; if($i==($count-1)) { echo 'skip'; } else { echo $value;

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

您试图做的事情将破坏foreach循环的目的。这意味着在整个阵列中循环,使我们的工作变得简单

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

例如:您可以使用php中的COUNT函数获取数组大小,然后可以使用for循环并将限制设置为arraysize-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++;
}

使用一个变量来跟踪到目前为止迭代了多少个元素,并在循环结束时剪切循环:

$count = count($array);

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

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

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

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

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 */
}

如果$element==end($myarray)中断
在foreach@sashkello如果数组中有重复的元素,或者当有元素的计算结果与上一个元素的值相同时,这将产生不希望的结果。那么,为什么在数组的末尾有一个额外的元素呢?@fireyedboy啊,是的,您可以在
array\u keys
上使用
end
。如果键是字符串,则不起作用。@jack okk than我正在编辑我的答案。)简单地这样做:为了($i=0;$ii不知道为什么感觉这是一个糟糕的问题,但这确实是我要问的。我想遍历所有内容,但排除数组中的最后一个元素。。Thanks@muffin问题是为什么最后一个元素应该被排除在外…如果这个值有什么特别的地方,也许它是不可能。这两种方法都很好,没有错误……非常简单。谢谢。
array\u slice($array,0,-1);
这也是一个很好的答案。谢谢:)@不客气。从其他答案中可以看出,有很多方法可以实现您的目标。for循环中有一个输入错误。应该是分号而不是逗号。@erfan它不是输入错误。我正在for循环的第一部分初始化两个变量(用逗号分隔)。for(expr1;expr2;expr3)中的每个表达式can.@DecentDabbler噢,哇……我现在觉得自己很笨XD
$i = 0;
$ilen = count( $array );
foreach( $array as $key => $value )
{
    if( ++$i == $ilen ) break;

    /* do something with $value */
}