Tableaux associatifs
Objectifs pédagogiques
- Déclarer et manipuler des tableaux associatifs en PHP.
- Accéder aux valeurs par clé.
- Créer des structures de données imbriquées (multi-niveaux).
- Trier des tableaux associatifs.
Introduction
Les tableaux associatifs permettent d'organiser des données en couples clé/valeur.
Contrairement aux tableaux indexés numériquement, on accède ici aux éléments à l’aide de leur nom de clé.
Déclaration simple
php
<?php
$user = [
"firstName" => "Alice",
"lastName" => "Durand",
"age" => 30
];Accès aux valeurs :
php
echo $user["firstName"]; // AliceBoucle foreach sur un tableau associatif
php
foreach ($user as $key => $value) {
echo "$key : $value<br>";
}Affiche :
firstName : Alice
lastName : Durand
age : 30Tableaux associatifs multi-niveaux
Il est possible de créer des structures plus complexes :
php
$tasks = [
[
"title" => "Apprendre PHP",
"done" => true
],
[
"title" => "Faire les courses",
"done" => false
]
];Accès à une valeur imbriquée :
php
echo $tasks[1]["title"]; // Faire les coursesItération sur une structure imbriquée
php
foreach ($tasks as $task) {
echo $task["title"];
echo $task["done"] ? " (terminée)" : " (en cours)";
echo "<br>";
}Trier un tableau associatif
PHP propose plusieurs fonctions pour trier les tableaux, mais attention : elles modifient le tableau original (par référence), sauf si on utilise une copie manuelle ou des fonctions personnalisées.
usort() avec une fonction de comparaison
Pour trier un tableau associatif selon une clé (title, done, etc.), on utilise usort() avec une fonction anonyme :
php
$tasks = [
['title' => 'Lire', 'done' => false],
['title' => 'Acheter du pain', 'done' => true],
['title' => 'Coder', 'done' => false],
];
usort($tasks, function ($a, $b) {
return $a['title'] <=> $b['title'];
});Tri croissant ou décroissant
Utilise <=> pour un tri croissant, inverse simplement l’ordre pour un tri décroissant :
php
// décroissant
usort($tasks, function ($a, $b) {
return $b['title'] <=> $a['title'];
});À savoir
usort()ne conserve pas les clés d’origine.- Il modifie directement le tableau (pas de copie).
- Le tri est case-sensitive par défaut.
Exercice pratique
- Créer un tableau
$useravec les clésfirstName,lastName,email. - Afficher chaque clé et valeur avec une boucle
foreach. - Créer un tableau
$taskscontenant plusieurs tâches avec les cléstitleetdone. - Afficher la liste des tâches dans une liste HTML.
- Bonus : trier les tâches par
titleavant affichage.