Menu
Coddy logo textTech

Itérer avec des boucles imbriquées

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 30 sur 68.

Lorsque vous travaillez avec des tableaux en 2D, vous devez souvent traiter chaque élément, ce qui nécessite de parcourir chaque ligne, puis chaque colonne au sein de cette ligne. C'est là que les boucles imbriquées deviennent essentielles : vous utilisez une boucle à l'intérieur d'une autre pour parcourir systématiquement toute la structure de la grille.

La boucle externe parcourt chaque ligne du tableau 2D, tandis que la boucle interne traite chaque élément de la ligne actuelle. Voici comment cela fonctionne avec une boucle foreach :

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

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

Vous pouvez également utiliser des boucles for traditionnelles lorsque vous avez besoin de plus de contrôle sur les indices. Cette approche vous donne accès aux positions des lignes et des colonnes :

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

Ce modèle de boucles imbriquées est fondamental pour traiter complètement les tableaux en 2D, que vous affichiez des données, effectuiez des calculs ou recherchiez des valeurs spécifiques à travers toute la structure de la grille.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Vous recevrez une entrée : un tableau 2D représentant la disposition des sièges d'une salle de classe au format JSON. Chaque tableau interne représente une rangée de sièges, et chaque élément contient soit le nom d'un étudiant, soit une chaîne vide pour les sièges vacants. Lisez l'entrée, convertissez la chaîne JSON en un tableau 2D, utilisez des boucles imbriquées pour parcourir l'ensemble de la disposition des sièges, et affichez le nom de chaque étudiant ainsi que sa position au format : Row X, Seat Y: Name

Ignorez les sièges vacants (chaînes vides) et n'affichez que les informations pour les sièges occupés. Les rangées et les sièges doivent être numérotés en commençant par 1 (et non 0).

Format d'entrée : Une ligne contenant un tableau JSON représentant la disposition des sièges (exemple : [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])

Sortie attendue : Chaque siège occupé affiché sur une ligne distincte au format Row X, Seat Y: Name, où X est le numéro de la rangée et Y est le numéro du siège (tous deux commençant par 1)

Aide-mémoire

Utilisez des boucles imbriquées pour traiter chaque élément d'un tableau 2D. La boucle externe parcourt les lignes, tandis que la boucle interne traite les éléments de chaque ligne.

Utilisation des boucles foreach :

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

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

Utilisation des boucles for traditionnelles pour l'accès par index :

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

Essayez vous-même

<?php
// Lire l'entrée JSON
$input = trim(fgets(STDIN));

// Convertir la chaîne JSON en un tableau 2D
$seating = (array)json_decode($input, true);

// À FAIRE : Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées pour parcourir les rangées et les sièges
// N'oubliez pas d'ignorer les sièges vides et de numéroter les rangées/sièges à partir de 1


?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux