Menu

Tableau associatif PHP : paires clé valeur

Un tableau associatif PHP range les valeurs sous des clés que vous nommez : $user = ['name' => 'Ada', 'age' => 36]; se lit avec $user['name']. Ajouter, modifier et supprimer des paires, parcourir clés et valeurs, obtenir toutes les clés ou valeurs, vérifier une clé, et trier par clé ou par valeur.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

Un tableau associatif range chaque valeur sous une clé que vous choisissez, écrite key => value : $user = ['name' => 'Ada', 'age' => 36];. Lisez une valeur avec $user['name'], et ajoutez-en ou modifiez-en une en affectant sa clé : $user['email'] = 'ada@example.com';.

Dans d'autres langages, la même structure s'appelle un dictionnaire, une map ou un hash. En PHP, c'est un tableau ordinaire dont les clés sont des chaînes au lieu de 0, 1, 2.

Ajouter, modifier et supprimer des paires

Affecter une clé qui n'existe pas l'ajoute à la fin. Affecter une clé qui existe remplace sa valeur et garde sa position. unset() supprime une paire.

array_push() n'aide pas ici : elle ne peut ajouter que des valeurs à clés numériques. Pour ajouter plusieurs paires à la fois, utilisez array_merge($stock, $more), où les nouvelles valeurs l'emportent, ou $stock + $more, où les clés existantes gardent leur valeur ; la page array_merge compare les deux.

Parcourir les clés et les valeurs

foreach ($array as $key => $value) parcourt les paires dans l'ordre où elles ont été ajoutées. Omettez $key => quand vous n'avez besoin que des valeurs.

Obtenir toutes les clés ou toutes les valeurs

array_keys() renvoie les clés sous forme de liste simple et array_values() renvoie les valeurs, toutes deux réindexées depuis 0. Donnez un second argument à array_keys() et elle ne renvoie que les clés qui contiennent cette valeur, ce qui permet de trouver toutes les clés d'une valeur.

Pour une seule clé, array_search() renvoie la première correspondance, ou false s'il n'y en a pas. La page array_search explique pourquoi il faut comparer ce résultat avec !== false.

Vérifier si une clé existe

isset($arr['key']) est la vérification habituelle et la plus rapide, mais elle renvoie false quand la clé existe et contient null. array_key_exists('key', $arr) renvoie true dans ce cas. Pour lire avec une valeur de repli, l'opérateur ?? fait les deux à la fois.

Trier par clé ou par valeur

ksort() trie par clé et asort() par valeur, toutes deux en gardant chaque clé attachée à sa valeur. krsort() et arsort() trient dans l'ordre inverse. N'utilisez pas sort() sur un tableau associatif : elle jette les clés et renumérote depuis 0.

Toutes ces fonctions trient sur place et renvoient true, donc $sorted = ksort($arr) vous donne true, pas un tableau. Les ordres personnalisés utilisent uasort() et uksort().

Inverser, compter et convertir en JSON

Quelques lignes reviennent sans cesse avec des données clé valeur : array_flip() échange clés et valeurs, array_count_values() compte combien de fois chaque valeur apparaît, et json_encode() transforme le tableau en objet JSON.

Erreur fréquente : lire une clé qui n'existe pas

Lire une clé manquante renvoie null, mais votre PHP affiche aussi un warning :

<?php
$user = ['name' => 'Ada'];
echo $user['phone'];
Warning: Undefined array key "phone" in /var/www/html/index.php on line 3

Donnez une valeur par défaut à la lecture avec ??, qui n'affiche jamais de warning, ou vérifiez d'abord avec isset() quand le cas manquant a besoin de sa propre branche.

Dans une chaîne entre guillemets doubles, entourez la lecture d'accolades, "{$user['email']}". Sans elles, PHP n'accepte que la forme sans guillemets "$user[email]", facile à mal écrire.

Questions fréquentes

Comment créer un tableau associatif en PHP ?

Écrivez chaque paire sous la forme key => value entre crochets : $prices = ['apple' => 1.2, 'pear' => 0.9];. Lisez une valeur avec $prices['apple'].

Comment trier un tableau associatif par clé en PHP ?

Appelez ksort($arr); pour l'ordre de A à Z ou krsort($arr); pour l'ordre de Z à A. Les deux trient sur place, gardent chaque valeur avec sa clé et renvoient true, pas le tableau trié.

Comment parcourir un tableau associatif en PHP ?

Utilisez foreach avec les deux variables : foreach ($prices as $fruit => $price) { echo "$fruit: $price\n"; }. Les paires sortent dans l'ordre où elles ont été ajoutées.

Comment obtenir toutes les clés d'un tableau associatif ?

array_keys($arr) renvoie les clés sous forme de tableau indexé, et array_values($arr) renvoie les valeurs. array_keys($arr, $value) ne renvoie que les clés dont la valeur est égale à $value.

Un tableau associatif PHP garde-t-il l'ordre d'insertion ?

Oui. Les tableaux PHP sont des maps ordonnées, donc foreach, print_r et json_encode voient tous les paires dans l'ordre où vous les avez insérées, jusqu'à ce que vous triiez le tableau avec ksort(), asort() ou une fonction similaire.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER