wake-up-neo.com

PHP - Schnappen Sie sich das erste Element mit einem foreach

Überlegen Sie, was eine gute Methode wäre, um die erste Iteration in einer foreach-Schleife durchzuführen. Ich möchte bei der ersten Iteration etwas anderes machen. 

Ist eine Bedingung unsere beste Option in diesen Fällen?

23
MEM

Ja, wenn Sie das Objekt nicht auf andere Weise durchlaufen können (eine normale for-Schleife), verwenden Sie in diesem Fall einfach eine Bedingung:

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

    // do something
}
68
poke

Sogar morer eleganterer:

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

Dieses Beispiel funktioniert nur, wenn Sie die integrierten Array-Anhängeigenschaften/-funktionen von PHP verwenden oder die Schlüssel manuell in der richtigen numerischen Reihenfolge angeben.

Hier ist ein Ansatz, der den anderen hier nicht ähnlich ist und über die natürliche Reihenfolge eines PHP - Arrays funktionieren sollte.

$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
33
Klinky

Sie können dem Start einfach einen Zähler hinzufügen:

$i = 0;

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

Ich habe diese Lösung in einem Blog-Beitrag in meinem Suchergebnis-Set gesehen, das diesen Beitrag veröffentlicht hat, und ich fand es ziemlich elegant. Obwohl vielleicht etwas schwer in der Verarbeitung.

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

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

Beachten Sie, dass in dem Beitrag auch eine Warnung angezeigt wird, dass dies nur funktioniert, wenn die Array-Werte eindeutig sind. Wenn Ihr letztes Element "Welt" ist und ein zufälliges Element in der Mitte auch "Welt" ist, wird das letzte Element zweimal ausgeführt.

6
danielson317
first = true
foreach(...)
    if first
        do stuff
        first = false
3
dutt

hm

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

eleganter.

2
janoliver

Das funktioniert auch

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

    if ($element === end($array))
        echo 'LAST ELEMENT!';
}
2
omukiguy
foreach($array as $element) {
    if ($element === reset($array))
        echo 'FIRST ELEMENT!';

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