0 XP
?
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 : foreach est 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érationJavaScriptPHP
Taillearr.lengthcount($arr)
Ajouterarr.push(x)array_push($arr, x)
Retirerarr.pop()array_pop($arr)
Filtrerarr.filter()array_filter()
Transformerarr.map()array_map()
Trouverarr.find()array_filter()[0]
Some/Everyarr.some()array_filter()+count
Inclutarr.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_reduce et usort — 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.