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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow