Comprendre les tableaux associatifs PHP
Apprenez les tableaux associatifs PHP : création, lecture, mise à jour, boucle foreach, tri par clé ou valeur, et erreurs courantes à éviter.
Un tableau associatif en PHP stocke des valeurs sous des clés nommées plutôt que sous des positions numériques. Là où un tableau indexé répond à la question « qu'y a-t-il à la position 2 ? », un tableau associatif répond à « quelle est la valeur pour email ? » — c'est exactement ainsi que l'on modélise des enregistrements, des configurations et des tables de correspondance dans du code réel.
Ce chapitre explique comment créer des tableaux associatifs, lire et mettre à jour leurs valeurs, les parcourir, les trier par clé ou par valeur, et éviter les erreurs courantes qui piègent les débutants.
Qu'est-ce qu'un tableau associatif ?
Un tableau associatif est un tableau dont les éléments sont accessibles par une clé string (appelée aussi index) plutôt que par une position entière. Chaque clé doit être unique — assigner une valeur à une clé qui existe déjà écrase l'ancienne valeur.
$user = [
"name" => "Alice",
"email" => "[email protected]",
"age" => 30,
];En interne, PHP ne possède qu'un seul type de tableau. Un tableau « indexé » est simplement un tableau associatif dont les clés sont les entiers 0, 1, 2, …. C'est pourquoi vous pouvez librement mélanger des clés string et entières dans le même tableau.
Créer un tableau associatif
Il existe deux façons équivalentes de construire un tableau associatif. La syntaxe courte [] (PHP 5.4+) est préférée dans le code moderne ; la fonction array() produit le même résultat.
// Short array syntax (recommended)
$fruits = ["apple" => "red", "banana" => "yellow", "grapes" => "green"];
// Long syntax — identical result
$fruits = array("apple" => "red", "banana" => "yellow", "grapes" => "green");Vous pouvez aussi ajouter des clés une par une, ce qui est pratique lors de la construction d'un tableau dans une boucle :
$prices = [];
$prices["coffee"] = 2.5;
$prices["tea"] = 2.0;L'ordre dans lequel vous assignez les clés est conservé — les tableaux PHP mémorisent l'ordre d'insertion, de sorte que l'itération ultérieure vous donnera coffee avant tea.
Accéder aux valeurs
Lisez une valeur avec sa clé entre crochets :
$fruits = ["apple" => "red", "banana" => "yellow"];
echo $fruits["apple"]; // redSi la clé n'existe pas, PHP émet un avertissement et retourne null. Pour lire en toute sécurité, vérifiez d'abord avec array_key_exists(), ou utilisez l'opérateur de coalescence null ?? pour fournir une valeur par défaut :
$color = $fruits["mango"] ?? "unknown";
echo $color; // unknown — no warningAjouter et modifier des valeurs
Assignez avec une clé pour mettre à jour un élément existant ou en ajouter un nouveau :
$fruits = ["apple" => "red"];
$fruits["apple"] = "green"; // modify existing key
$fruits["cherry"] = "dark red"; // add a new key
print_r($fruits);
// Array ( [apple] => green [cherry] => dark red )Supprimez un élément avec unset() :
unset($fruits["apple"]);Parcourir un tableau associatif
Une boucle for classique ne fonctionne pas ici car il n'y a pas d'indices numériques séquentiels. Utilisez foreach avec la forme key => value pour parcourir à la fois les clés et les valeurs :
$user = ["name" => "Alice", "email" => "[email protected]", "age" => 30];
foreach ($user as $field => $value) {
echo "$field: $value\n";
}
// name: Alice
// email: [email protected]
// age: 30Trier les tableaux associatifs
Comme les clés ont une signification, vous triez avec des fonctions qui préservent l'association clé/valeur — sort() supprimerait les clés. Utilisez :
ksort()/krsort()— tri par clé, croissant / décroissantasort()/arsort()— tri par valeur, croissant / décroissant
$scores = ["Bob" => 75, "Alice" => 90, "Carol" => 82];
arsort($scores); // sort by value, highest first
foreach ($scores as $name => $score) {
echo "$name: $score\n";
}
// Alice: 90
// Carol: 82
// Bob: 75Consultez Trier les tableaux en PHP pour l'ensemble complet des fonctions de tri.
Erreurs courantes
- Réutiliser une clé écrase silencieusement.
["a" => 1, "a" => 2]donne["a" => 2]— aucune erreur, la première valeur est perdue. - Les clés string numériques deviennent des entiers.
["10" => "x"]est stocké sous la clé entière10.$arr["10"]et$arr[10]accèdent au même élément. - Les clés
true/false/nullsont converties. Une clétruedevient1,falseetnulldeviennent respectivement0et"". Utilisez de préférence de simples string et des entiers comme clés. - Ne comptez pas sur
for ($i = 0; …). Utilisezforeach,array_keys(), ouarray_values()pour itérer quand les clés ne sont pas0..n.
Conclusion
Les tableaux associatifs vous permettent de stocker des données sous des clés string significatives et uniques — idéal pour les enregistrements, les paramètres et les tables de correspondance. Lisez avec $arr["key"] (protégez les clés manquantes avec ??), mettez à jour ou ajoutez par assignation, supprimez avec unset(), itérez avec foreach, et triez avec les fonctions préservant l'association clé/valeur comme ksort() et asort().
Pour aller plus loin, explorez les tableaux indexés, les tableaux multidimensionnels (tableaux de tableaux associatifs), et array_keys() pour extraire toutes les clés en une seule fois.