PHP
Schleifen
Suche…
Einführung
Loops sind ein grundlegender Aspekt der Programmierung. Sie ermöglichen Programmierer Code zu erstellen , die für einige bestimmte Anzahl von Wiederholungen wiederholt, oder Iterationen. Die Anzahl der Iterationen kann explizit sein (z. B. 6 Iterationen) oder fortgesetzt, bis eine Bedingung erfüllt ist ('bis die Hölle einfriert').
Dieses Thema behandelt die verschiedenen Arten von Schleifen, ihre zugehörigen Steueranweisungen und ihre möglichen Anwendungen in PHP.
Syntax
- für (Init-Zähler; Testzähler; Inkrementzähler) {/ * code * /}
- foreach (Array als Wert) {/ * code * /}
- foreach (Array als Schlüssel => Wert) {/ * code * /}
- while (Bedingung) {/ * code * /}
- do {/ * code * /} while (Bedingung);
- anyloop {weiter; }
- anyloop {[ anyloop ...] {continue int; }}
- Anyloop {brechen; }
- anyloop {[ anyloop ...] {break int; }}
Bemerkungen
Es ist oft nützlich, den gleichen oder einen ähnlichen Codeblock mehrmals auszuführen. Anstelle des Kopieren-Einfügens von fast gleichen Anweisungen stellen Loops einen Mechanismus bereit, um Code eine bestimmte Anzahl von Malen auszuführen und Datenstrukturen zu durchlaufen. PHP unterstützt die folgenden vier Arten von Schleifen:
-
for
-
while
-
do..while
-
foreach
Zur Steuerung dieser Schleifen stehen Anweisungen für continue
und break
zur Verfügung.
zum
Die
for
Anweisung wird verwendet, wenn Sie wissen, wie oft Sie eine Anweisung oder einen Anweisungsblock ausführen möchten.
Der Initialisierer wird verwendet, um den Startwert für den Zähler der Anzahl der Schleifeniterationen festzulegen. Zu diesem Zweck kann eine Variable hier deklariert werden und es ist üblich, sie $i
.
Das folgende Beispiel durchläuft zehnmal und zeigt Zahlen von 0 bis 9 an.
for ($i = 0; $i <= 9; $i++) {
echo $i, ',';
}
# Example 2
for ($i = 0; ; $i++) {
if ($i > 9) {
break;
}
echo $i, ',';
}
# Example 3
$i = 0;
for (; ; ) {
if ($i > 9) {
break;
}
echo $i, ',';
$i++;
}
# Example 4
for ($i = 0, $j = 0; $i <= 9; $j += $i, print $i. ',', $i++);
Die erwartete Ausgabe ist:
0,1,2,3,4,5,6,7,8,9,
für jeden
Die
foreach
Anweisung wird zum Durchlaufen von Arrays verwendet.
Bei jeder Iteration wird der Wert des aktuellen Array-Elements der Variablen $value
zugewiesen, und der Arrayzeiger wird um eins verschoben, und bei der nächsten Iteration wird das nächste Element verarbeitet.
Im folgenden Beispiel werden die Elemente im zugeordneten Array angezeigt.
$list = ['apple', 'banana', 'cherry'];
foreach ($list as $value) {
echo "I love to eat {$value}. ";
}
Die erwartete Ausgabe ist:
I love to eat apple. I love to eat banana. I love to eat cherry.
Auf den Schlüssel / Index eines Werts können Sie auch mit foreach zugreifen:
foreach ($list as $key => $value) {
echo $key . ":" . $value . " ";
}
//Outputs - 0:apple 1:banana 2:cherry
Standardmäßig ist $value
eine Kopie des Werts in $list
. Änderungen, die innerhalb der Schleife vorgenommen werden, werden danach nicht in $list
.
foreach ($list as $value) {
$value = $value . " pie";
}
echo $list[0]; // Outputs "apple"
Um das Array innerhalb der foreach
Schleife zu ändern, weisen Sie $value
dem Operator &
den $value
Referenz zu. Es ist wichtig unset
die Variable danach , so dass die Wiederverwendung von $value
an anderer Stelle nicht das Array überschreiben.
foreach ($list as &$value) { // Or foreach ($list as $key => &$value) {
$value = $value . " pie";
}
unset($value);
echo $list[0]; // Outputs "apple pie"
Sie können die Array-Elemente in der foreach
Schleife auch ändern, indem Sie auf den Array-Schlüssel des aktuellen Elements verweisen.
foreach ($list as $key => $value) {
$list[$key] = $value . " pie";
}
echo $list[0]; // Outputs "apple pie"
brechen
Das
break
Schlüsselwort beendet die aktuelle Schleife sofort.
Ähnlich wie bei der continue
Anweisung hält ein break
Ausführung einer Schleife an. Im Gegensatz zu einer continue
Aussage jedoch break
bewirkt , dass die sofortige Beendigung der Schleife und nicht die bedingte Anweisung erneut ausführen.
$i = 5;
while(true) {
echo 120/$i.PHP_EOL;
$i -= 1;
if ($i == 0) {
break;
}
}
Dieser Code wird produzieren
24
30
40
60
120
führt jedoch nicht den Fall aus, in dem $i
0 ist, was aufgrund der Division durch 0 zu einem schwerwiegenden Fehler führen würde.
Die break-Anweisung kann auch verwendet werden, um mehrere Ebenen von Schleifen aufzubrechen. Ein solches Verhalten ist sehr nützlich, wenn geschachtelte Schleifen ausgeführt werden. Um beispielsweise ein Array von Zeichenfolgen in eine Ausgabefolge zu kopieren, werden alle #
-Symbole entfernt, bis die Ausgabefolge genau 160 Zeichen enthält
$output = "";
$inputs = array(
"#soblessed #throwbackthursday",
"happy tuesday",
"#nofilter",
/* more inputs */
);
foreach($inputs as $input) {
for($i = 0; $i < strlen($input); $i += 1) {
if ($input[$i] == '#') continue;
$output .= $input[$i];
if (strlen($output) == 160) break 2;
}
$output .= ' ';
}
Der Befehl break 2
beendet sofort die Ausführung der inneren und der äußeren Schleife.
mache ... während
Die
do...while
Anweisung führt einen Codeblock mindestens einmal aus. Dann wiederholt sie die Schleife, solange eine Bedingung erfüllt ist.
Das folgende Beispiel erhöht den Wert von $i
mindestens einmal und erhöht die Variable $i
solange, bis sie einen Wert von weniger als 25 hat.
$i = 0;
do {
$i++;
} while($i < 25);
echo 'The final value of i is: ', $i;
Die erwartete Ausgabe ist:
The final value of i is: 25
fortsetzen
Das Schlüsselwort
continue
hält die aktuelle Iteration einer Schleife an, beendet jedoch die Schleife nicht.
Genau wie die break
Anweisung befindet sich die continue
Anweisung innerhalb des Schleifenkörpers. Bei Ausführung führt die continue
Anweisung dazu, dass die Ausführung sofort zur Bedingung der Schleife springt.
Im folgenden Beispiel druckt die Schleife eine Nachricht basierend auf den Werten in einem Array, überspringt jedoch einen angegebenen Wert.
$list = ['apple', 'banana', 'cherry'];
foreach ($list as $value) {
if ($value == 'banana') {
continue;
}
echo "I love to eat {$value} pie.".PHP_EOL;
}
Die erwartete Ausgabe ist:
I love to eat apple pie.
I love to eat cherry pie.
Die continue
Anweisung kann auch verwendet werden, um die Ausführung sofort auf eine äußere Ebene einer Schleife fortzusetzen, indem die Anzahl der zu springenden Schleifenebenen angegeben wird. Betrachten Sie zum Beispiel Daten wie
Obst | Farbe | Kosten |
---|---|---|
Apfel | rot | 1 |
Banane | Gelb | 7 |
Kirsche | rot | 2 |
Traube | Grün | 4 |
Um nur Kuchen aus Früchten herzustellen, die weniger als 5 kosten
$data = [
[ "Fruit" => "Apple", "Color" => "Red", "Cost" => 1 ],
[ "Fruit" => "Banana", "Color" => "Yellow", "Cost" => 7 ],
[ "Fruit" => "Cherry", "Color" => "Red", "Cost" => 2 ],
[ "Fruit" => "Grape", "Color" => "Green", "Cost" => 4 ]
];
foreach($data as $fruit) {
foreach($fruit as $key => $value) {
if ($key == "Cost" && $value >= 5) {
continue 2;
}
/* make a pie */
}
}
Wenn die continue 2
Anweisung ausgeführt wird, springt die Ausführung sofort zurück zu $data as $fruit
die äußere Schleife fortsetzt und den gesamten anderen Code überspringt (einschließlich der Bedingung in der inneren Schleife).
während
Die
while
Anweisung führt einen Codeblock aus, sofern und solange ein Testausdruck wahr ist.
Wenn der Testausdruck wahr ist, wird der Codeblock ausgeführt. Nachdem der Code ausgeführt wurde, wird der Testausdruck erneut ausgewertet und die Schleife wird fortgesetzt, bis der Testausdruck als falsch erkannt wird.
Das folgende Beispiel wird wiederholt, bis die Summe 100 erreicht, bevor sie beendet wird.
$i = true;
$sum = 0;
while ($i) {
if ($sum === 100) {
$i = false;
} else {
$sum += 10;
}
}
echo 'The sum is: ', $sum;
Die erwartete Ausgabe ist:
The sum is: 100