Iterowanie z użyciem zagnieżdżonych pętli
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 30 z 68.
Podczas pracy z tablicami 2D często trzeba przetworzyć każdy element, co wymaga odwiedzenia każdego wiersza, a następnie każdej kolumny w danym wierszu. Właśnie wtedy niezbędne stają się zagnieżdżone pętle. Używasz jednej pętli wewnątrz drugiej, aby systematycznie przejść przez całą strukturę siatki.
Pętla zewnętrzna przechodzi przez każdy wiersz tablicy 2D, a pętla wewnętrzna przetwarza każdy element w bieżącym wierszu. Oto jak to działa w przypadku pętli foreach:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Możesz także używać tradycyjnych pętli for, gdy potrzebujesz większej kontroli nad indeksami. To podejście daje ci dostęp do pozycji zarówno wiersza, jak i kolumny:
<?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";
}
}
?>Ten wzorzec zagnieżdżonych pętli ma kluczowe znaczenie dla pełnego przetwarzania tablic 2D, niezależnie od tego, czy wyświetlasz dane, wykonujesz obliczenia, czy wyszukujesz konkretne wartości w całej strukturze siatki.
Wyzwanie
ŁatwyOtrzymasz jedno wejście: tablicę 2D reprezentującą układ miejsc w klasie w formacie JSON. Każda tablica wewnętrzna reprezentuje rząd miejsc, a każdy element zawiera imię i nazwisko ucznia albo pusty ciąg znaków w przypadku wolnego miejsca. Wczytaj wejście, przekonwertuj ciąg JSON na tablicę 2D, użyj zagnieżdżonych pętli, aby przeiterować przez cały układ miejsc, i wypisz imię i nazwisko każdego ucznia wraz z jego pozycją w formacie: Row X, Seat Y: Name
Pomiń wolne miejsca (puste ciągi znaków) i wypisuj informacje tylko o zajętych miejscach. Rzędy i miejsca powinny być numerowane od 1 (nie od 0).
Format wejścia: Jeden wiersz zawierający tablicę JSON reprezentującą układ miejsc (przykład: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Oczekiwany wynik: Każde zajęte miejsce wypisane w osobnym wierszu w formacie Row X, Seat Y: Name, gdzie X to numer rzędu, a Y to numer miejsca (oba numerowane od 1)
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe JSON
$input = trim(fgets(STDIN));
// Przekształć ciąg JSON w tablicę dwuwymiarową
$seating = (array)json_decode($input, true);
// TODO: Napisz swój kod poniżej
// Użyj zagnieżdżonych pętli, aby przejść przez rzędy i miejsca
// Pamiętaj, aby pomijać puste miejsca i numerować rzędy oraz miejsca, zaczynając od 1
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online