Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Łatwy

Otrzymasz 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


?>
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator PHP online