Wie kann ich den aktuellen Array-Index in einer Foreach-Schleife abrufen?

Lesezeit: 3 Minuten

Benutzer-Avatar
Liebesquell

Wie bekomme ich den aktuellen Index in a foreach Schleife?

foreach ($arr as $key => $val)
{
    // How do I get the index?
    // How do I get the first element in an associative array?
}

  • $key IST der aktuelle Index.

    – Jason

    20. September 2009 um 3:12 Uhr

Benutzer-Avatar
Pennen

In Ihrem Beispielcode wäre es nur $key.

Wenn Sie beispielsweise wissen möchten, ob dies der erste, zweite oder ith Iteration der Schleife, dies ist Ihre einzige Option:

$i = -1;
foreach($arr as $val) {
  $i++;
  //$i is now the index.  if $i == 0, then this is the first element.
  ...
}

Das bedeutet natürlich nicht $val == $arr[$i] weil das Array ein assoziatives Array sein könnte.

  • Beginnen Sie vielleicht mit $i = 0; und bewege dich $i++;Inkrementierer am Ende der Schleife für bessere Lesbarkeit.

    – pbarney

    4. August 2016 um 4:30 Uhr

  • @pbarney Ich bin anderer Meinung. Das Inkrementieren am Ende ist ein Fehler, der darauf wartet, passiert zu werden: falls es einen gibt continue; Anweisung im Schleifenkörper, oder irgendjemand könnte in Zukunft vernünftigerweise eine hinzufügen, ein Inkrement am Ende funktioniert nicht. Außerdem hält dies die Deklaration der Variablen und des Inkrements nahe beieinander.

    – Kipp

    4. August 2016 um 14:50 Uhr

Dies ist die bisher umfassendste Antwort und beseitigt die Notwendigkeit für a $i Variable herumschwimmen. Es ist eine Kombination aus den Antworten von Kip und Gnarf.

$array = array( 'cat' => 'meow', 'dog' => 'woof', 'cow' => 'moo', 'computer' => 'beep' );
foreach( array_keys( $array ) as $index=>$key ) {

    // display the current index + key + value
    echo $index . ':' . $key . $array[$key];

    // first index
    if ( $index == 0 ) {
        echo ' -- This is the first element in the associative array';
    }

    // last index
    if ( $index == count( $array ) - 1 ) {
        echo ' -- This is the last element in the associative array';
    }
    echo '<br>';
}

Hoffe es hilft jemandem.

  • Erstellen einer ganz neuen Reihe von Längen count($array) scheint eine Menge Overhead zu sein, um die Einführung einer skalaren Variablen zu vermeiden

    – Kipp

    30. Dezember 2014 um 20:32 Uhr

  • sehr schlechte Namensgebung $index=>$key

    – dompie

    30. Oktober 2018 um 8:13 Uhr

foreach($array as $key=>$value) {
    // do stuff
}

$schlüssel ist der Index von jedem $array Element

  • Nicht unbedingt. Wenn Ihr Array so aussieht: ` $array = array( ‘cat’ => ‘meow’, ‘dog’ => ‘woof’, ‘cow’ => ‘moo’, ‘computer’ => ‘beep’ ); ` der $key des ersten Items wäre ‘cat’.

    – Andrew Cavanagh

    3. Dezember 2015 um 17:05 Uhr

  • Vielen Dank für Ihre Antwort. Ich denke, der Index wird der Schlüssel sein. Hier sind: ‘Katze’, ‘Hund’, …

    – Xman Classic

    4. Dezember 2015 um 4:44 Uhr


  • Ich verstehe nicht, warum dies nicht die beste Antwort auf dieser Seite ist.

    – Syed Priom

    17. Dezember 2015 um 22:14 Uhr

$i = 0;
foreach ($arr as $key => $val) {
  if ($i === 0) {
    // first index
  }
  // current index is $i

  $i++;
}

Der aktuelle Index ist der Wert von $key. Und für die andere Frage können Sie auch verwenden:

current($arr)

um das erste Element eines beliebigen Arrays zu erhalten, vorausgesetzt, Sie verwenden die nicht next(), prev() oder andere Funktionen, um den internen Zeiger des Arrays zu ändern.

Benutzer-Avatar
khrizenriquez

Damit erhalten Sie den Indexwert

foreach ($arr as $key => $val)
{
    $key = (int) $key;
    //With the variable $key you can get access to the current array index
    //You can use $val[$key] to

}

$key ist der Index für das aktuelle Array-Element und $val ist der Wert dieses Array-Elements.

Das erste Element hat einen Index von 0. Um darauf zuzugreifen, verwenden Sie daher $arr[0]

Verwenden Sie this, um das erste Element des Arrays zu erhalten

$firstFound = false;
foreach($arr as $key=>$val)
{
    if (!$firstFound)
       $first = $val;
    else
       $firstFound = true;
    // do whatever you want here
}

// now ($first) has the value of the first element in the array

1257550cookie-checkWie kann ich den aktuellen Array-Index in einer Foreach-Schleife abrufen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy