PHP - 使用foreach获取第一个元素

时间:2010-10-18 09:12:35

标签: php foreach iteration

想知道在foreach循环上获得第一次迭代的好方法。 我想在第一次迭代时做一些不同的事情。

对于这些案件,条件是我们最好的选择吗?

10 个答案:

答案 0 :(得分:70)

是的,如果你不能以不同的方式浏览对象(正常的循环),在这种情况下只需使用条件:

$first = true;
foreach ( $obj as $value )
{
    if ( $first )
    {
        // do something
        $first = false;
    }
    else
    {
        // do something
    }

    // do something
}

答案 1 :(得分:34)

更加优雅的人:

foreach($array as $index => $value) {
 if ($index == 0) {
      echo $array[$index];
 }
}

该示例仅在您使用PHP的内置数组追加功能/功能或以适当的数字顺序手动指定键时才有效。

这里的方法与此处列出的其他方法不同,它应该通过任何PHP数组的自然顺序工作。

$first = array_shift($array);
//do stuff with $first

foreach($array as $elem) {
 //do stuff with rest of array elements
}

array_unshift($array, $first);     //return first element to top

答案 2 :(得分:10)

你可以简单地在开头添加一个计数器,如下所示:

$i = 0;

foreach($arr as $a){
 if($i == 0) {
 //do ze business
 }
 //the rest
 $i++;
}

答案 3 :(得分:6)

我在搜索结果集中的blog post上看到了这个解决方案,提出了这个帖子,我觉得它很优雅。虽然处理可能有点沉重。

foreach ($array as $element) 
{
    if ($element === reset($array))
        echo 'FIRST ELEMENT!';

    if ($element === end($array))
        echo 'LAST ELEMENT!';
}

请注意,帖子上还有一个警告,即只有在数组值唯一时才会有效。如果你的最后一个元素是“世界”而中间的一些随机元素也是“世界”,那么最后一个元素将执行两次。

答案 4 :(得分:3)

first = true
foreach(...)
    if first
        do stuff
        first = false

答案 5 :(得分:2)

HM

<?php
$i = 0;
foreach($ar as $sth) {
    if($i++ == 0) {
        // do something
    }
    // do something else
}

更优雅。

答案 6 :(得分:2)

这也有效

foreach($array as $element) {
    if ($element === reset($array))
        echo 'FIRST ELEMENT!';

    if ($element === end($array))
        echo 'LAST ELEMENT!';
}

答案 7 :(得分:1)

这是一个不使用 foreach 循环的例子

 <?php
    // A sample indexed array
    $cities = array("London", "Paris", "New York");
    echo $cities[0]; // Outputs: London
     
    // A sample associative array
    $fruits = array("a" => "Apple", "b" => "Ball", "c" => "Cat");
    echo array_values($fruits)["0"]; // Outputs: Apple
  ?>

答案 8 :(得分:0)

foreach($array as $element) {
    if ($element === reset($array))
        echo 'FIRST ELEMENT!';

    if ($element === end($array))
        echo 'LAST ELEMENT!';
}

答案 9 :(得分:0)

使用 key() native php function? 怎么样,它应该适用于所有类型的数组(索引,关联),因为它总是返回第一个键,无论它是在循环内部还是外部。

$array = array(
    'One'   => 'value',
    'Two'   => 'value-2',
    'Three' => 'value-3',
);

foreach ( $array as $index => $key ) {
    if ( key( $array ) ) {
        /**Do something with the first key*/
    } else {
        /**Do something else*/
    }
}

如果它索引数组,你有很多选项可以通过, 对我来说,使用 counter 总是没问题,而且一直都能得到正确的结果。

    $array = array(
        'One',
        'Two',
        'Three',
    );

    $i     = 0;
    foreach ( $array as $index => $key ) {
        if ( $array[ $i ] ) {
            /**Do something with the first key*/
        } else {
            /**Do something else*/

            $i++;
        }
    }

两者都可以在 $key => $value 循环中正常工作,并且只会返回第一个键。

另外,我想补充一点,您始终可以使用数百种不同的方式在脚本中存档目标,这完全取决于您在这种情况下想要使用的方式。