Iterieren mit verschachtelten Schleifen
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 30 von 68.
Beim Arbeiten mit 2D-Arrays müssen Sie oft jedes einzelne Element verarbeiten, was den Besuch jeder Zeile und dann jeder Spalte innerhalb dieser Zeile erfordert. Hier werden verschachtelte Schleifen unverzichtbar – Sie verwenden eine Schleife innerhalb einer anderen, um die gesamte Gitterstruktur systematisch zu durchlaufen.
Die äußere Schleife iteriert durch jede Zeile des 2D-Arrays, während die innere Schleife jedes Element innerhalb der aktuellen Zeile verarbeitet. So funktioniert das mit einer foreach-Schleife:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Sie können auch traditionelle for-Schleifen verwenden, wenn Sie mehr Kontrolle über die Indizes benötigen. Dieser Ansatz ermöglicht Ihnen den Zugriff auf sowohl die Zeilen- als auch die Spaltenpositionen:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Dieses verschachtelte Schleifenmuster ist grundlegend für die vollständige Verarbeitung von 2D-Arrays, egal ob Sie Daten anzeigen, Berechnungen durchführen oder nach bestimmten Werten in der gesamten Gitterstruktur suchen.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachSie erhalten eine Eingabe: ein 2D-Array, das eine Sitzordnung im Klassenzimmer im JSON-Format darstellt. Jedes innere Array repräsentiert eine Sitzreihe, und jedes Element enthält entweder den Namen eines Schülers oder einen leeren String für freie Plätze. Lesen Sie die Eingabe ein, konvertieren Sie den JSON-String in ein 2D-Array, verwenden Sie verschachtelte Schleifen, um die gesamte Sitzordnung zu durchlaufen, und geben Sie den Namen jedes Schülers zusammen mit seiner Position im Format Row X, Seat Y: Name aus.
Überspringen Sie freie Plätze (leere Strings) und geben Sie nur Informationen für belegte Plätze aus. Reihen und Plätze sollten beginnend bei 1 (nicht 0) nummeriert werden.
Eingabeformat: Eine Zeile, die ein JSON-Array enthält, das die Sitzordnung darstellt (Beispiel: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Erwartete Ausgabe: Jeder belegte Platz wird in einer separaten Zeile im Format Row X, Seat Y: Name ausgegeben, wobei X die Reihennummer und Y die Platznummer ist (beide beginnend bei 1).
Spickzettel
Verwenden Sie verschachtelte Schleifen, um jedes Element in einem 2D-Array zu verarbeiten. Die äußere Schleife iteriert durch die Zeilen, während die innere Schleife die Elemente innerhalb jeder Zeile verarbeitet.
Verwendung von foreach-Schleifen:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Verwendung traditioneller for-Schleifen für den Indexzugriff:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Probier es selbst
<?php
// Die JSON-Eingabe lesen
$input = trim(fgets(STDIN));
// JSON-String in ein 2D-Array umwandeln
$seating = (array)json_decode($input, true);
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie verschachtelte Schleifen, um durch Reihen und Sitze zu iterieren
// Denken Sie daran, leere Sitze zu überspringen und Reihen/Sitze ab 1 zu nummerieren
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung