如何测试数组指针是否位于foreach循环中的第一个元素

时间:2012-02-07 13:08:14

标签: php foreach

在for循环中它很简单......

for ( $idx = 0 ; $idx < count ( $array ) ; $idx ++ )
{
    if ( $idx == 0 )
    {
        // This is the first element of the array.
    }
}

如何在foreach循环中完成这项工作?

is_first()之类的功能吗?

我正在寻找类似的东西:

foreach ( $array as $key => $value )
{
    if ( /* is the first element */ )
    {
        // do logic on first element
    }
    else
    {
        // all other logic
    }
}

我以为我可以像$is_first = true;那样设置一个bool,然后一旦循环迭代一次,就将bool设置为false。

但是php有很多预先构建的功能,并且使用...或者其他方式...

整个bool方式看起来几乎像是...... cheeting:s

干杯,

亚历

7 个答案:

答案 0 :(得分:20)

我通常这样做:

$isFirst = true;
foreach($array as $key => $value){
  if($isFirst){
    //Do first stuff
  }else{
    //Do other stuff
  }
  $isFirst = false;
}

显然适用于任何类型的数组。

答案 1 :(得分:12)

您可以使用“current()”

执行此操作
$myArray = array('a', 'b', 'c');
if (current($myArray) == $myArray[0]) {
    // We are at the first element
}

文档:http://php.net/manual/en/function.current.php

检索第一个元素的方法:

$myArray[0]

$slice = array_slice($myArray, 0, 1); 
$elm = array_pop($slice);

答案 2 :(得分:5)

$myArray = array('a' => 'first', 'b' => 'second', 'c' => 'third'); 

reset($myArray);
$firstKey = key($myArray);
foreach($myArray as $key => $value) {
    if ($key === $firstKey) {
        echo "I'm Spartacus" , PHP_EOL;
    }
    echo $key , " => " , $value , PHP_EOL;
}

答案 3 :(得分:2)

你可以用计数器代替bool

$i = 0;

foreach ( $array as $key => $value )

    if ($i == 0) {
        // first
    } else  {
        // last
    }
    // …
    $i++;
}

或通过

提取第一个元素
$first = array_shift($array);
保留数组

foreach;

答案 4 :(得分:1)

您可以将操作放在 foreach 循环之前的第一个元素上,删除该元素,然后为其余元素输入 foreach 循环。

答案 5 :(得分:1)

$first = array_shift($idx);

foreach($idx as $key => $value){
...
...
...
}

答案 6 :(得分:0)

这里有两个函数可以检测数组键是第一个还是最后一个。

如果没有提供密钥,它将采用当前指针位置。

在foreach循环中,您需要提供密钥,因为指针不正确。

public static function isFirst($array, $key=null)
{
    if($key===null){
      $key = key($array);
    }
    reset($array);
    $first = key($array);
    return $first === $key;
}

public static function isLast($array, $key=null)
{
    if($key===null){
        $key = key($array);
    }
    end($array);
    $last = key($array);
    return $last === $key;
}