Débutant45 min30 XP
Objectifs de cette leçon
- Créer des tableaux indexés et associatifs
- Parcourir avec foreach
- Utiliser les fonctions de manipulation de tableaux
Tableaux en PHP 📋
Les tableaux (arrays) sont la structure de données la plus polyvalente en PHP. Ils peuvent être indexés, associatifs, ou multidimensionnels — et remplacent souvent ce qui nécessiterait des classes dans d'autres langages.
Types de tableaux
<?php // Tableau indexé (comme un tableau JS classique) $fruits = ["pomme", "banane", "cerise"]; echo $fruits[0]; // pomme // Tableau associatif (comme un objet JS) $personne = [ "nom" => "Dupont", "age" => 30, "email" => "dupont@mail.com" ]; echo $personne["nom"]; // Dupont // Tableau mixte (rare mais possible) $mixte = [ "nom" => "Alice", 0 => "premier", "scores" => [90, 85, 92] ]; ?>
Fonctions de manipulation essentielles
<?php $tab = [3, 1, 4, 1, 5, 9, 2, 6]; // Taille echo count($tab); // 8 // Ajouter $tab[] = 10; // Ajouter à la fin array_push($tab, 11, 12); // Ajouter plusieurs éléments array_unshift($tab, 0); // Ajouter au début // Retirer $dernier = array_pop($tab); // Retire et retourne le dernier $premier = array_shift($tab); // Retire et retourne le premier // Tri sort($tab); // Tri croissant inplace rsort($tab); // Tri décroissant inplace asort($tab); // Tri croissant (preserve les clés) arsort($tab); // Tri décroissant (preserve les clés) usort($tab, fn($a, $b) => $a <=> $b); // Tri personnalisé // Recherche echo in_array(5, $tab); // 1 (true) — existe-t-il ? echo array_search(5, $tab); // Index de la valeur 5 // Fusion et découpage $partie1 = [1, 2, 3]; $partie2 = [4, 5, 6]; $fusion = array_merge($partie1, $partie2); // [1, 2, 3, 4, 5, 6] $tranche = array_slice($fusion, 2, 3); // [3, 4, 5] — à partir de l'index 2, 3 éléments ?>
Parcours de tableaux
<?php $notes = ["Alice" => 18, "Bob" => 14, "Charlie" => 16]; // foreach classique foreach ($notes as $nom => $note) { echo "$nom a $note/20\n"; } // for avec count $fruits = ["pomme", "banane", "cerise"]; for ($i = 0; $i < count($fruits); $i++) { echo $fruits[$i] . "\n"; } // array_walk : modifie le tableau original array_walk($notes, function(&$note, $nom) { $note += 2; // Ajoute 2 points à chaque note }); ?>
💡 Conseil :
foreachest généralement le plus propre et le plus rapide pour parcourir un tableau.
Filtrage et transformation
<?php $nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // array_filter : garde les éléments qui passent le test $pairs = array_filter($nombres, fn($n) => $n % 2 === 0); // [2, 4, 6, 8, 10] // array_map : transforme chaque élément $carres = array_map(fn($n) => $n ** 2, $nombres); // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] // array_column : extrait une colonne d'un tableau associatif $etudiants = [ ["nom" => "Alice", "note" => 18], ["nom" => "Bob", "note" => 14], ["nom" => "Charlie", "note" => 16] ]; $noms = array_column($etudiants, "nom"); // ["Alice", "Bob", "Charlie"] // array_combine : crée un tableau associatif $cles = ["a", "b", "c"]; $valeurs = [1, 2, 3]; $assoc = array_combine($cles, $valeurs); // ["a" => 1, "b" => 2, "c" => 3] ?>
Destructuration d'arrays
<?php // Destructuration classique $fruits = ["pomme", "banane", "cerise"]; [$a, $b, $c] = $fruits; // $a = "pomme", $b = "banane", $c = "cerise" // Avec des clés $personne = ["nom" => "Alice", "age" => 25, "ville" => "Paris"]; ["nom" => $n, "age" => $a] = $personne; // $n = "Alice", $a = 25 // Ignorer des éléments [$premier, , $troisieme] = [1, 2, 3]; // $premier = 1, $troisieme = 3 ?>
Tableaux multidimensionnels
<?php // Matrice 2D $grille = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; echo $grille[1][2]; // 6 // Parcours avec foreach imbriqués foreach ($grille as $ligne => $valeurs) { foreach ($valeurs as $colonne => $valeur) { echo "[$ligne][$colonne] = $valeur\n"; } } // Données structurées (style base de données) $employes = [ ["id" => 1, "nom" => "Alice", "dept" => "IT"], ["id" => 2, "nom" => "Bob", "dept" => "RH"], ["id" => 3, "nom" => "Charlie", "dept" => "IT"] ]; // Filtrer les employés IT $it = array_filter($employes, fn($e) => $e["dept"] === "IT"); ?>
Tri avancé
<?php $etudiants = [ ["nom" => "Alice", "note" => 18, "age" => 22], ["nom" => "Bob", "note" => 14, "age" => 20], ["nom" => "Charlie", "note" => 16, "age" => 23] ]; // Tri par note décroissante usort($etudiants, fn($a, $b) => $b["note"] <=> $a["note"]); // Tri multiple : d'abord par note DESC, puis par nom ASC usort($etudiants, function($a, $b) { $noteCmp = $b["note"] <=> $a["note"]; return $noteCmp !== 0 ? $noteCmp : $a["nom"] <=> $b["nom"]; }); // array_multisort (plus pratique pour les tableaux 2D) $noms = array_column($etudiants, "note"); $etudiantsFinaux = $etudiants; array_multisort($noms, SORT_DESC, $etudiantsFinaux); ?>
Comparaison avec JavaScript
| Opération | JavaScript | PHP |
|---|---|---|
| Taille | arr.length | count($arr) |
| Ajouter | arr.push(x) | array_push($arr, x) |
| Retirer | arr.pop() | array_pop($arr) |
| Filtrer | arr.filter() | array_filter() |
| Transformer | arr.map() | array_map() |
| Trouver | arr.find() | array_filter()[0] |
| Some/Every | arr.some() | array_filter()+count |
| Inclut | arr.includes() | in_array() |
Exercice pratique
Crée un gestionnaire de notes :
<?php $etudiants = [ ["nom" => "Alice", "notes" => [18, 16, 19]], ["nom" => "Bob", "notes" => [12, 15, 14]], ["nom" => "Charlie", "notes" => [17, 18, 16]] ]; // Calculer la moyenne de chaque étudiant $moyennes = array_map(function($e) { $moy = array_sum($e["notes"]) / count($e["notes"]); return ["nom" => $e["nom"], "moyenne" => round($moy, 2)]; }, $etudiants); // Trier par moyenne décroissante usort($moyennes, fn($a, $b) => $b["moyenne"] <=> $a["moyenne"]); // Afficher le classement foreach ($moyennes as $rang => $e) { echo ($rang + 1) . ". " . $e["nom"] . " — " . $e["moyenne"] . "/20\n"; } ?>
🎯 A retenir : Les tableaux PHP sont ultra-polyvalents. Maîtrise
array_filter,array_map,array_reduceetusort— ce sont tes outils quotidiens.
Prochaine leçon : Les formulaires HTML et PHP — crée des formulaires sécurisés !
⚡ Simulateur — Tableaux PHP
Étape 1/9📝 Pseudo-code
1<?php
2$fruits = ["pomme", "banane", "cerise"];
3echo $fruits[0];
4$fruits[] = "datte";
5foreach ($fruits as $fruit) {
6 echo $fruit;
7}
8?>
⚙️ Exécution
📦 Mémoire
Aucune variable
🔀 Flux d'exécution
<?php
3
Début du script
Ouverture du bloc PHP.