Fusionner des tableaux associatifs
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 15 sur 68.
Alors que array_merge() fonctionne parfaitement avec les tableaux indexés, son comportement change considérablement lorsqu'il s'agit de tableaux associatifs. La différence principale réside dans la manière dont il gère les clés de chaîne de caractères en double entre les tableaux fusionnés.
Lors de la fusion de tableaux associatifs, si les deux tableaux contiennent la même clé de type chaîne, la valeur du dernier tableau écrasera la valeur du premier tableau :
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Affiche : Array ( [theme] => dark [language] => english [notifications] => false )
?>Remarquez comment « theme » est passé de « light » à « dark » et « notifications » est passé de true à false, tandis que « language » est resté « english » car il n'a pas été écrasé. Ce comportement rend array_merge() parfait pour les systèmes de configuration où vous souhaitez que les valeurs par défaut soient écrasées par les préférences de l'utilisateur.
L'ordre des arguments est important — les valeurs des tableaux listés plus tard dans l'appel de la fonction l'emportent sur les précédentes. Ce comportement d'écrasement ne s'applique qu'aux clés de type chaîne de caractères ; les clés numériques sont toujours réindexées de manière séquentielle, tout comme avec les tableaux indexés.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileVous recevrez deux entrées : un tableau de configuration par défaut et un tableau de préférences utilisateur, tous deux au format JSON. Lisez les deux entrées, convertissez chaque chaîne JSON en un tableau associatif, utilisez array_merge() pour les combiner (les préférences utilisateur remplaçant les valeurs par défaut), et affichez la configuration fusionnée en utilisant print_r().
Format d'entrée : Deux lignes - chaque ligne contient un objet JSON représentant un tableau associatif (exemple : {"theme":"light","language":"english"})
Sortie attendue : Le tableau de configuration fusionné où les préférences utilisateur remplacent les valeurs par défaut, affiché à l'aide de print_r()
Aide-mémoire
Lors de la fusion de tableaux associatifs avec array_merge(), les clés de chaîne en double sont écrasées par les valeurs des tableaux suivants :
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Résultat : Array ( [theme] => dark [language] => english [notifications] => false )
?>Comportements clés :
- Clés de chaîne portant le même nom : les valeurs des tableaux suivants remplacent les précédentes
- L'ordre est important : les tableaux listés plus tard ont la priorité
- Les clés numériques sont toujours réindexées de manière séquentielle
- Idéal pour les systèmes de configuration avec des valeurs par défaut et des surcharges utilisateur
Essayez vous-même
<?php
// Lire les deux entrées JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Convertir les chaînes JSON en tableaux associatifs
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Écrivez votre code ci-dessous pour fusionner les tableaux
// Afficher la configuration fusionnée
print_r($mergedConfig);
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement