PHP-Schleifen: Die Foreach-Schleife verstehen
Die foreach-Schleife ist ein leistungsstarkes Werkzeug für PHP-Entwickler. Sie bietet eine bequeme Möglichkeit, über Arrays und Objekte zu iterieren.
Die foreach-Schleife ist die bequemste Möglichkeit, über Arrays und Objekte in PHP zu iterieren. Anders als die for-Schleife benötigt sie keinen Zähler und keine Längenberechnung — sie durchläuft einfach jedes Element der Reihe nach. Dieser Leitfaden behandelt die Syntax, das Auslesen von Schlüsseln und Werten, das Modifizieren von Elementen per Referenz, verschachtelte Schleifen und häufige Fallstricke für Einsteiger.
Was ist die Foreach-Schleife?
Die foreach-Schleife ist eine Schleife, die speziell für Arrays und Objekte entwickelt wurde. Sie durchläuft eine Sammlung und übergibt Ihnen jedes Element einzeln, sodass Sie keine Indexvariable verwalten oder sich um das Überschreiten der Grenzen kümmern müssen. Das macht sie ideal für indizierte Arrays, assoziative Arrays und iterierbare Objekte gleichermaßen.
Sie existiert in zwei Formen:
foreach ($array as $value)— wenn Sie nur jeden Wert benötigen.foreach ($array as $key => $value)— wenn Sie auch jeden Schlüssel benötigen.
Wenn Sie einen Zähler, einen anderen Schritt als 1 oder eine feste Anzahl von Durchläufen benötigen, die nicht an ein array gebunden ist, verwenden Sie stattdessen eine for- oder while-Schleife. Einen Überblick über alle Schleifentypen finden Sie unter PHP-Schleifen.
Syntax der Foreach-Schleife
Die Syntax der foreach-Schleife ist einfach und unkompliziert. Sie besteht aus dem Schlüsselwort foreach, gefolgt von einem Paar runder Klammern, die das zu iterierende array oder object definieren. Innerhalb der Klammern definieren Sie eine Variable, die den Wert jedes Elements enthält, während die Schleife durchläuft.
Hier ein Beispiel für die Syntax der foreach-Schleife:
PHP-Syntax der Foreach-Schleife
foreach ($array as $value) {
// code to be executed for each element
}In diesem Beispiel ist $array das array oder object, über das Sie iterieren möchten, und $value ist die Variable, die den Wert jedes Elements während der Schleifeniteration enthält.
Für assoziative Arrays oder Objekte, bei denen Sie sowohl den Schlüssel als auch den Wert benötigen, können Sie den =>-Operator verwenden:
foreach ($array as $key => $value) {
// code to be executed for each element
}Schleifen mit Schlüsseln und Werten
Wenn ein array Schlüssel auf Werte abbildet, gibt Ihnen die Form $key => $value beides auf einmal:
<?php
$capitals = array(
"France" => "Paris",
"Japan" => "Tokyo",
"Egypt" => "Cairo"
);
foreach ($capitals as $country => $city) {
echo "The capital of $country is $city.\n";
}Dies gibt aus:
The capital of France is Paris.
The capital of Japan is Tokyo.
The capital of Egypt is Cairo.Array-Elemente per Referenz modifizieren
Standardmäßig kopiert foreach jeden Wert, daher ändert eine Zuweisung an die Schleifenvariable das ursprüngliche array nicht. Stellen Sie dem Wert & voran, um per Referenz zu iterieren und Elemente direkt zu ändern:
<?php
$prices = array(10, 20, 30);
foreach ($prices as &$price) {
$price *= 2; // changes the real array element
}
unset($price); // important: break the reference
print_r($prices);Dies gibt aus:
Array
(
[0] => 20
[1] => 40
[2] => 60
)Achtung: Fügen Sie nach einer Referenz-Schleife immer
unset($price)hinzu. Die Variable zeigt weiterhin auf das letzte Element, und ihre Wiederverwendung in einer späteren Schleife korrumpiert stillschweigend Ihre Daten — einer der häufigsten PHP-Fehler.
Verwendung der Foreach-Schleife
Die foreach-Schleife wird zum Durchlaufen von Arrays und Objekten verwendet. Sie ermöglicht den Zugriff auf jedes Element des array oder object einzeln und die Ausführung einer bestimmten Aktion für jedes Element. Beispielsweise können Sie die foreach-Schleife verwenden, um alle Elemente eines array auszugeben oder eine Berechnung für jedes Element in einem object durchzuführen.
Hier ein Beispiel, wie die foreach-Schleife in PHP verwendet wird:
PHP-Verwendung der Foreach-Schleife
In diesem Beispiel haben wir ein array mit Farben erstellt und dann die foreach-Schleife verwendet, um jede Farbe im array auszugeben. Die Schleife iteriert über die Elemente des $colors-array, und bei jeder Iteration wird der Wert des aktuellen Elements der Variable $color zugewiesen.
Beispiele für die Foreach-Schleife
Die foreach-Schleife ist ein flexibles Werkzeug, das auf vielfältige Weise eingesetzt werden kann. Hier sind einige Beispiele, wie Sie die foreach-Schleife in Ihrem PHP-Code verwenden können:
- Ausgabe der Elemente eines array:
PHP-Ausgabe der Elemente eines Arrays mit der foreach-Schleife
- Berechnung der Summe eines array:
PHP-Berechnung der Summe eines Arrays mit der foreach-Schleife
- Zugriff auf die Eigenschaften eines object:
PHP-Zugriff auf die Eigenschaften eines Objekts in der foreach-Schleife
<?php
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$people = array(
new Person("John", 25),
new Person("Jane", 30),
new Person("Jim", 35)
);
foreach ($people as $person) {
echo "Name: " . $person->name . ", Age: " . $person->age . "<br>";
}
?>In diesem Beispiel haben wir eine Person-Klasse mit zwei Eigenschaften, name und age, erstellt. Anschließend haben wir ein array von Person-Objekten erstellt und die foreach-Schleife verwendet, um auf die Eigenschaften jedes Person-object zuzugreifen. Die Schleife iteriert über die Elemente des $people-array, und bei jeder Iteration wird der Wert des aktuellen Person-object der Variable $person zugewiesen. Anschließend verwenden wir den ->-Operator, um auf die Eigenschaften des Person-object zuzugreifen.
Verschachtelte Foreach-Schleifen
Um ein mehrdimensionales array zu durchlaufen, verschachteln Sie eine foreach-Schleife in einer anderen. Die äußere Schleife durchläuft die Zeilen, und die innere Schleife durchläuft die Spalten jeder Zeile:
<?php
$matrix = array(
array(1, 2, 3),
array(4, 5, 6)
);
foreach ($matrix as $row) {
foreach ($row as $cell) {
echo $cell . " ";
}
echo "\n"; // new line after each row
}Dies gibt aus:
1 2 3
4 5 6Steuerung der Schleife mit break und continue
Innerhalb einer foreach-Schleife können Sie break verwenden, um die Schleife vorzeitig zu beenden, und continue, um zum nächsten Element zu springen:
<?php
$numbers = array(1, 2, 3, 4, 5, 6);
foreach ($numbers as $number) {
if ($number % 2 !== 0) {
continue; // skip odd numbers
}
if ($number > 4) {
break; // stop once we pass 4
}
echo $number . " ";
}Dies gibt aus:
2 4Die ungeraden Zahlen 1, 3 und 5 werden durch continue übersprungen; 2 und 4 werden ausgegeben; und wenn die Schleife die gerade Zahl 6 (größer als 4) erreicht, hält break sie vollständig an.
Fazit
Die foreach-Schleife ist ein unverzichtbares Werkzeug für PHP-Entwickler. Sie bietet eine bequeme und einfach zu verwendende Möglichkeit, über Arrays und Objekte zu iterieren, und ermöglicht den Zugriff auf jedes Element sowie die Ausführung von Aktionen darauf. Ob Sie die Elemente eines array ausgeben, Summen berechnen oder auf Objekteigenschaften zugreifen — die foreach-Schleife ist ein vielseitiges Werkzeug, das auf vielerlei Weise eingesetzt werden kann.
Warum also nicht die foreach-Schleife noch heute in Ihrem PHP-Code ausprobieren und sehen, wie sie Ihren Entwicklungsprozess vereinfachen und optimieren kann?