PHP EINFACH LERNEN – #04 for / foreach

PHP EINFACH LERNEN – #04 for / foreach

Manchmal muss man Dinge öfters machen oder für alle Werte eines Arrays eine Änderung durchführen. Dies kann man mit einer for oder einer foreach Schleife machen.

Nützlich wird die „foreach“-Schleife dann, wenn ich z.B. ein Array habe in welchem 100 Benutzer aufgelistet sind und ich diese in einer Benutzerliste darstellen möchte.

Für diesen Teil der „PHP einfach lernen“-Reihe nutze ich folgendes Array als Beispiel:

$benutzerListe = [
    0 => [
        "name" => "Nutzer 1",
        "lvl" => 3,
        "avatar" => "http://link.zum/avatar.jpg",
    ],
    1 => [
        "name" => "MeinName",
        "lvl" => 3,
        "avatar" => "http://link.zum/avatar.jpg",
    ],
    [...]
];

for-Schleife for(expr1;expr2;expr3)

Wir wollen nun für jeden Benutzer im Array, den Benutzername ausgeben. Mit einer „for“-Schleife funktioniert dass so:

$anzahlBenutzer = count($benutzerListe); // So bekommen wir die Anzahl der im Array enthaltenen Schlüssel

for ($i = 0; $i < $anzahlBenutzer; $i++) {
    echo $i.": "$benutzerListe[$i]["name"]."<br>";
}

Ausgabe:

0: Nutzer 1
1: MeinName
2: RofelOMGlel
3: Admin
4: SWED

Wie im Kommentar erwähnt, brauchen wir hier die Anzahl an Elementen im Array. Außerdem müssen die Schlüssel bei 0 beginnen und lückenlos aufsteigen. Dies wird automatisch bei Arrays gemacht welche keinen Schlüssel zugewiesen bekommen.

Die „for“-Schleife besteht dann aus 3 Teilen. Im ersten Teil wird eine Variable definiert und ihr Anfangswert bestimmt. Im Fall dieses Beispiels, beginnt die Variable $i mit 0, da die Schlüssel eines Arrays bei 0 beginnen. Im zweiten Teil legen wir die Bedingung fest. Die Schleife wird solange ausgeführt bis der Wert als unwahr zurückgegeben wird. Im Beispiel wird also die Schleife so lange ausgeführt wie $i kleiner als $anzahlBenutzer ist. Bei 8 Nutzern wäre $anzahlBenutzer == 8 da aber $i bei 0 beginnt, ist der achte Nutzer schon bei $i == 7 erreicht. Daher muss auf kleiner und nicht auf nicht gleich geprüft werden. Im dritten Teil wird dann bestimmt, was gemacht werden soll, nachdem die Schleife ausgeführt wurde. In diesem Fall, addiert die Schleife immer 1 zu $i hinzu. So erhöht sich $i immer jede Runde um 1.

foreach-Schleife foreach($array as $key => $value)

Es gibt aber auch eine einfachere Möglichkeit. Nutz man die „foreach“-Schleife, so braucht man nicht mehr die Schlüssel eines Arrays zu kennen. Beispiel:

foreach($benutzerListe as $benutzer){
    echo $benutzer["name"];
}

Die „foreach“-Schleife läuft automatisch jeden Wert eines Arrays durch. Jeder Wert eines Schlüssel wird dann auf die selbst definierte Variable hinter dem „as“ zugewiesen. Für jeden Wer eines Arrays kann so zugegriffen werden, ohne den Schlüssel dafür kennen zu müssen. Es gibt sogar die Möglichkeit, den Schlüssel des jeweiligen Wertes auszugeben. Dazu hier noch das Beispiel überarbeitet:

foreach($benutzerListe as $benutzerKey => $benutzer){
    echo "Schlüssel: ".$benutzerKey."<br>";
    echo "Wert:<pre>";
    var_dump($benutzer);
    echo "</pre><br><br>";
}

Ausgabe:

Schlüssel: 0
Wert:
array(3) {
  ["name"]=>  string(8) "Nutzer 1"
  ["lvl"]=>  int(3)
  ["avatar"]=>  string(26) "http://link.zum/avatar.jpg"
}


Schlüssel: 1
Wert:
array(3) {
  ["name"]=>  string(8) "MeinName"
  ["lvl"]=>  int(1)
  ["avatar"]=>  string(26) "http://link.zum/avatar.jpg"
}


Schlüssel: 2
Wert:
array(3) {
  ["name"]=>  string(11) "RofelOMGlel"
  ["lvl"]=>  int(999)
  ["avatar"]=>  string(26) "http://link.zum/avatar.jpg"
}


Schlüssel: 3
Wert:
array(3) {
  ["name"]=>  string(5) "Admin"
  ["lvl"]=>  NULL
  ["avatar"]=>  string(26) "http://link.zum/avatar.jpg"
}


Schlüssel: 420
Wert:
array(3) {
  ["name"]=>  string(4) "SWED"
  ["lvl"]=>  int(420)
  ["avatar"]=>  string(26) "http://link.zum/avatar.jpg"
}

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.