Skip to content

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"]; // Alice

Boucle foreach sur un tableau associatif

php
foreach ($user as $key => $value) {
  echo "$key : $value<br>";
}

Affiche :

firstName : Alice
lastName : Durand
age : 30

Tableaux 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 courses

Ité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

  1. Créer un tableau $user avec les clés firstName, lastName, email.
  2. Afficher chaque clé et valeur avec une boucle foreach.
  3. Créer un tableau $tasks contenant plusieurs tâches avec les clés title et done.
  4. Afficher la liste des tâches dans une liste HTML.
  5. Bonus : trier les tâches par title avant affichage.