Boucles et tableaux
Ce que tu vas apprendre
- Créer un tableau simple et un tableau associatif.
- Parcourir un tableau avec
foreach, et répéter du code avecforetwhile. - Utiliser quelques fonctions pratiques comme
count,in_arrayetarray_map.
Un tableau simple
Un tableau (array) range plusieurs valeurs dans une seule variable. Chaque valeur a une position, appelée indice, qui commence à 0.
<?php
$ingredients = ["farine", "oeufs", "lait"];
echo $ingredients[0]; // farine
echo count($ingredients); // 3
$ingredients[] = "sucre"; // ajoute à la fin
count renvoie le nombre d'éléments. Les crochets vides [] ajoutent un élément en fin de tableau.
Le tableau associatif
Au lieu d'un numéro, tu peux repérer chaque valeur par un nom, appelé clé. C'est un tableau associatif.
<?php
$recette = [
"titre" => "Crêpes",
"duree" => 30,
"vegetarien" => true,
];
echo $recette["titre"]; // Crêpes
$recette["duree"] = 25; // modifier
La flèche => relie la clé à sa valeur. Ce format correspond à ce que tu rencontreras plus tard avec les bases de données et le JSON.
Des tableaux dans des tableaux
Une liste de recettes est un tableau dont chaque élément est lui-même un tableau associatif.
<?php
$recettes = [
["titre" => "Crêpes", "duree" => 30],
["titre" => "Ratatouille", "duree" => 60],
["titre" => "Tarte aux pommes", "duree" => 45],
];
echo $recettes[1]["titre"]; // Ratatouille
On lit de l'extérieur vers l'intérieur : d'abord la position dans la liste, puis la clé.
foreach : parcourir un tableau
foreach exécute un bloc de code pour chaque élément d'un tableau. C'est la boucle que tu utiliseras le plus.
<ul>
<?php foreach ($recettes as $recette): ?>
<li><?= $recette["titre"] ?> (<?= $recette["duree"] ?> min)</li>
<?php endforeach; ?>
</ul>
À chaque tour, $recette contient l'élément suivant. La syntaxe avec : et endforeach est pratique dans les pages HTML, car elle évite les accolades.
Pour récupérer aussi la clé :
<?php
foreach ($recette as $cle => $valeur) {
echo "$cle : $valeur\n";
}
htmlspecialchars.for et while
Quand tu sais combien de fois répéter, utilise for. Il a trois parties : le départ, la condition de continuation et le pas.
<?php
for ($i = 1; $i <= 3; $i++) {
echo "Étape $i\n";
}
$i++ ajoute 1 à $i à chaque tour. Quand la condition devient fausse, la boucle s'arrête.
while répète tant qu'une condition reste vraie :
<?php
$portions = 1;
while ($portions < 8) {
$portions = $portions * 2;
}
echo $portions; // 8
Une boucle while dont la condition ne devient jamais fausse tourne sans fin. Vérifie toujours qu'une variable change à chaque tour.
Quelle boucle choisir
| Besoin | Boucle |
|---|---|
| Parcourir tous les éléments d'un tableau | foreach |
| Répéter un nombre de fois connu | for |
| Répéter jusqu'à ce qu'une condition change | while |
Fonctions utiles sur les tableaux
<?php
$ingredients = ["farine", "oeufs", "lait"];
var_dump(in_array("lait", $ingredients)); // bool(true)
echo implode(", ", $ingredients); // farine, oeufs, lait
sort($ingredients); // trie par ordre alphabétique
$majuscules = array_map('strtoupper', $ingredients);
in_array teste la présence d'une valeur, implode assemble un tableau en texte, sort trie le tableau en place. array_map applique une fonction à chaque élément et renvoie un nouveau tableau.
Pour vérifier qu'une clé existe, isset ou array_key_exists conviennent :
<?php
if (isset($recette["photo"])) {
echo $recette["photo"];
}
isset renvoie faux si la clé est absente ou vaut null.
$recette["photo"] ?? "defaut.jpg". Tu évites un avertissement et tu obtiens une valeur de secours.À retenir
- Un tableau range plusieurs valeurs ; les positions commencent à 0,
countdonne la taille. - Un tableau associatif repère ses valeurs par des clés avec
=>. foreachparcourt un tableau élément par élément, avec ou sans la clé.forsert quand le nombre de tours est connu,whiletant qu'une condition est vraie.in_array,implode,sortetarray_mapcouvrent beaucoup de besoins courants.??etissetévitent les erreurs sur une clé absente.
Pour aller plus loin
Sources officielles
Ensuite
Types, chaînes et conditions
Découvrir les types de valeurs de PHP, manipuler des chaînes de caractères et prendre des décisions avec if et match.
Fonctions et objets
Écrire des fonctions typées avec strict_types, puis modeler tes données avec des classes, la promotion de propriétés et les espaces de noms.
- Projet
- Lignes de code
- Niveau
- Sous-sol
- Appartement
- PHP
- Pièce
- 3/7
- Plan n°
- php/03.boucles-et-tableaux