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.
Sfida
FacileRiceverai 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
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classificaEsercitati da solo: Compilatore PHP online