0 Daumen
591 Aufrufe

Ich habe eine foreach-Schleife in PHP und muss erkennen, wann das erste Element da ist und wann das letzte Element des Arrays erscheint.

Hier mein Code:

foreach($cars as $car)
{
// Code
}
Wie mache ich das?
Avatar von

1 Antwort

+1 Daumen

Es gibt hierfür verschiedene Lösungsansätze. Persönlich bevorzuge ich für solch ein Problem eine standardmäßige for-Schleife, die das Leben einfacher macht, also:

for($i=0; $i<count($cars); $i++)
{
// erstes Element
if($i==0)
{
var_dump('Erstes Auto: '.$cars[$i]);
}

  // letztes Element
  if($i==count($cars)-1)
  {
      var_dump('Letztes Auto: '.$cars[$i]);
  }
}


Erste Lösung:

Du erzielst das gleiche innerhalb einer foreach-Schleife wie folgt:

$i = 0;
$last = count($cars) - 1;

foreach($cars as $car)
{
  // erstes Element
  if($i==0)
  {
      var_dump('Erstes Auto: '.$car);
  }

  // letztes Element
  if($i==$last)
  {
      var_dump('Letztes Auto: '.$car);
  }
 
// wichtig
$i++;
}

Zweite Lösung:

Man kann mit Hilfe des $key das erste und letzte Element wie folgt identifizieren:

reset($cars);
$first = key($cars);
$last = end($cars);

foreach($cars as $key => $car)
{
    if($key === $first)
{
var_dump('Erstes Auto: '.$car);
}
else if($key === $last)
    {
      var_dump('Letztes Auto: '.$car);
    }
}

Dritte Lösung:

Wichtig: Diese Lösung funktioniert nur einwandfrei zum Finden des letzten Elements, wenn das Array keine Boolean-Werte enthält, da next() false zurückgeben kann.

foreach($cars as $car)
{
    if(!next($cars))
{
        var_dump('Letztes Auto: '.$car);
    }
}

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community