Fusionner des tableaux associatifs
Fait partie de la section Logique & Flux du Journey PHP de Coddy. Leçon 15 sur 68.
Bien que array_merge() fonctionne parfaitement avec les tableaux indexés, son comportement change considérablement lorsqu’il est utilisé avec des tableaux associatifs. La différence essentielle réside dans la manière dont il gère les clés de chaîne dupliquées entre les tableaux fusionnés.
Lors de la fusion de tableaux associatifs, si les deux tableaux contiennent la même clé de chaîne, la valeur du tableau situé plus tard remplacera la valeur du tableau situé plus tôt :
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>Remarquez que « theme » est passé de « light » à « dark » et que « notifications » est passé de true à false, tandis que « language » est resté « english », puisqu’il n’a pas été remplacé. Ce comportement rend array_merge() parfait pour les systèmes de configuration où vous souhaitez que les valeurs par défaut soient remplacées par les préférences de l’utilisateur.
L’ordre des arguments est important : les valeurs des tableaux répertoriés plus tard dans l’appel de fonction prennent le pas sur celles répertoriées plus tôt. Ce comportement d’écrasement s’applique uniquement aux clés de type chaîne ; les clés numériques sont toujours réindexées séquentiellement, comme pour les tableaux indexés.
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 tableau associatif, utilisez array_merge() pour les combiner (les préférences utilisateur remplaçant les valeurs par défaut), puis affichez la configuration fusionnée à l’aide de print_r().
Format des entrées : 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é, dans lequel les préférences utilisateur remplacent les valeurs par défaut, affiché à l’aide de print_r()
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 classementEntraînez-vous par vous-même : Compilateur PHP en ligne