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 à deux dimensions, vous devez souvent traiter chaque élément, ce qui nécessite de parcourir chaque ligne, puis chaque colonne de cette ligne. C’est là que les boucles imbriquées deviennent indispensables. 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 à 2 dimensions, 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 davantage de contrôle sur les indices. Cette approche vous donne accès à la fois aux positions de ligne et de 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";
}
}
?>Ce modèle de boucles imbriquées est fondamental pour traiter complètement les tableaux 2D, que vous affichiez des données, effectuiez des calculs ou recherchiez des valeurs spécifiques dans toute la structure de la grille.
Défi
FacileVous recevrez une entrée : un tableau 2D représentant la disposition des places d’une salle de classe au format JSON. Chaque tableau interne représente une rangée de places, et chaque élément contient soit le nom d’un élève, soit une chaîne vide pour les places vacantes. Lisez l’entrée, convertissez la chaîne JSON en tableau 2D, utilisez des boucles imbriquées pour parcourir toute la disposition des places, puis affichez le nom de chaque élève ainsi que sa position au format : Row X, Seat Y: Name
Ignorez les places vacantes (chaînes vides) et affichez uniquement les informations concernant les places occupées. Les rangées et les places doivent être numérotées à partir de 1 (et non de 0).
Format d’entrée : une ligne contenant un tableau JSON représentant la disposition des places (exemple : [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Sortie attendue : chaque place occupée affichée 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 de la place (tous deux commençant à 1)
Essayez vous-même
<?php
// Lire l'entrée JSON
$input = trim(fgets(STDIN));
// Convertir la chaîne JSON en tableau 2D
$seating = (array)json_decode($input, true);
// TODO: Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées pour parcourir les rangées et les sièges
// N'oubliez pas de sauter les sièges vides et de numéroter les rangées/sièges en commençant par 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 classementEntraînez-vous par vous-même : Compilateur PHP en ligne