Ü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?
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
}
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
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++;
}
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.
first = true
foreach(...)
if first
do stuff
first = false
hm
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
eleganter.
Das funktioniert auch
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}