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.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileVous 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
?>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
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement