Menu
Coddy logo textTech

Iterare con cicli annidati

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 30 di 68.

Quando lavori con gli array 2D, spesso devi elaborare ogni singolo elemento, il che richiede di visitare ogni riga e poi ogni colonna all’interno di quella riga. È qui che i cicli annidati diventano essenziali. Usi un ciclo all’interno di un altro per attraversare sistematicamente l’intera struttura a griglia.

Il ciclo esterno scorre ogni riga dell’array 2D, mentre il ciclo interno elabora ogni elemento della riga corrente. Ecco come funziona con un ciclo foreach:

<?php
$schedule = [
    ["Meeting", "Lunch", "Presentation"],
    ["Training", "Review", "Planning"],
    ["Workshop", "Break", "Demo"]
];

foreach ($schedule as $day) {
    foreach ($day as $appointment) {
        echo $appointment . "\n";
    }
}
?>

Puoi anche usare i cicli for tradizionali quando hai bisogno di un maggiore controllo sugli indici. Questo approccio ti consente di accedere sia alle posizioni delle righe sia a quelle delle colonne:

<?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";
    }
}
?>

Questo schema di cicli annidati è fondamentale per elaborare completamente gli array 2D, sia che tu stia visualizzando dati, eseguendo calcoli o cercando valori specifici nell'intera struttura della griglia.

challenge icon

Sfida

Facile

Riceverai un input: un array 2D che rappresenta la disposizione dei posti in un'aula in formato JSON. Ogni array interno rappresenta una fila di posti e ogni elemento contiene il nome di uno studente oppure una stringa vuota per i posti liberi. Leggi l'input, converti la stringa JSON in un array 2D, usa cicli annidati per scorrere l'intera disposizione dei posti e stampa il nome di ogni studente insieme alla sua posizione nel formato: Row X, Seat Y: Name

Salta i posti liberi (stringhe vuote) e stampa le informazioni solo per i posti occupati. Le file e i posti devono essere numerati a partire da 1 (non da 0).

Formato dell'input: Una riga contenente un array JSON che rappresenta la disposizione dei posti (esempio: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])

Output previsto: Ogni posto occupato stampato su una riga separata nel formato Row X, Seat Y: Name, dove X è il numero della fila e Y è il numero del posto (entrambi a partire da 1)

Provalo tu

<?php
// Leggi l'input JSON
$input = trim(fgets(STDIN));

// Converti la stringa JSON in un array 2D
$seating = (array)json_decode($input, true);

// TODO: Scrivi il tuo codice qui sotto
// Usa cicli annidati per scorrere le file e i posti
// Ricorda di saltare i posti vuoti e di numerare le file e i posti a partire da 1


?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online