W3docs

PHP Array Replace : Guide complet

Découvrez la fonction array_replace en PHP pour remplacer les valeurs d'un array par celles d'un autre array, avec des exemples pratiques.

En PHP, la fonction array_replace() remplace les valeurs d'un array de base par les valeurs provenant d'un ou plusieurs arrays de remplacement, en correspondant par clé. Pour chaque clé présente dans un array ultérieur, sa valeur écrase la valeur de l'array de base ; les clés qui n'existent pas encore sont ajoutées. Les arrays originaux ne sont jamais modifiés — array_replace() retourne un nouvel array.

Cette page couvre la syntaxe et les paramètres de array_replace(), la façon dont elle gère les clés string et numériques, ses différences avec array_merge(), et le piège qu'elle n'est pas récursive (utilisez array_replace_recursive() lorsque vous avez besoin de fusionner des arrays imbriqués).

Quand l'utiliser

Utilisez array_replace() lorsque vous souhaitez remplacer des valeurs par défaut : définissez un array de base avec des valeurs par défaut, puis passez les valeurs personnalisées fournies par l'utilisateur en second argument. Comme la correspondance se fait par clé (et non par position), c'est la méthode la plus propre pour fusionner des arrays de configuration où les clés ont une signification.

Syntaxe

La syntaxe de la fonction array_replace est la suivante :

Syntaxe de la fonction PHP array_replace

array_replace ( array $array1 , array $array2 [, array $... ] ) : array

array_replace() prend au moins un array et accepte un nombre quelconque d'arrays supplémentaires. Elle parcourt les arrays de remplacement de gauche à droite : chaque valeur dont la clé existe déjà dans $array1 l'écrase, et chaque nouvelle clé est ajoutée. Les arrays ultérieurs ont la priorité sur les précédents. La fonction retourne l'array résultant et laisse toutes les entrées inchangées.

Remarque : les clés numériques sont associées de la même manière que les clés string — par la valeur littérale de la clé, pas par position. C'est la différence fondamentale avec array_merge(), qui renumérote les clés entières.

Paramètres

  • array1 : Il s'agit de l'array initial dont les valeurs seront remplacées par les valeurs des autres arrays.
  • array2 : Il s'agit de l'array dont les valeurs remplaceront les valeurs de array1.
  • ... : Ce sont des arrays supplémentaires optionnels, dont les valeurs seront utilisées pour remplacer davantage les valeurs de array1.

Exemples

Examinons quelques exemples pour voir comment fonctionne array_replace.

Exemple 1 : Remplacement de valeurs dans un seul array

PHP Exemple 1 : Remplacement de valeurs dans un seul array avec array_replace

php— editable, runs on the server

Résultat :

Array
(
    [a] => peach
    [b] => banana
    [c] => cherry
)

Ici la clé a existe dans les deux arrays, donc $array2 la remplace (applepeach). La clé b existe uniquement dans $array1, elle reste donc banana. La clé c existe uniquement dans $array2, elle est donc ajoutée au résultat.

Exemple 2 : Remplacement de valeurs dans plusieurs arrays

PHP Exemple 2 : Remplacement de valeurs dans plusieurs arrays avec array_replace

php— editable, runs on the server

Résultat :

Array
(
    [a] => peach
    [b] => blueberry
    [c] => cherry
    [d] => date
)

Les arrays de remplacement sont appliqués de gauche à droite. La clé a est définie à peach par $array2. La clé b commence à banana mais est écrasée par $array3 avec blueberry — le dernier array gagne. Les clés c (de $array2) et d (de $array3) sont nouvelles, elles sont donc ajoutées.

Exemple 3 : Non récursif — utilisez array_replace_recursive()

array_replace() remplace des valeurs entières, donc un array imbriqué sur une clé correspondante est entièrement remplacé plutôt que fusionné. Lorsque vous avez besoin d'une fusion profonde, utilisez array_replace_recursive().

PHP Exemple 3 : array_replace vs array_replace_recursive

<?php

$base     = ["db" => ["host" => "localhost", "port" => 3306]];
$override = ["db" => ["host" => "example.com"]];

// array_replace overwrites the whole "db" sub-array
print_r(array_replace($base, $override));

// array_replace_recursive merges the nested arrays
print_r(array_replace_recursive($base, $override));

?>

Résultat :

Array
(
    [db] => Array
        (
            [host] => example.com
        )

)
Array
(
    [db] => Array
        (
            [host] => example.com
            [port] => 3306
        )

)

Avec array_replace(), le port d'origine est perdu car l'ensemble de l'array db est remplacé. array_replace_recursive() descend dans l'array imbriqué et conserve port.

array_replace() vs array_merge()

Les deux combinent des arrays, mais ils traitent les clés différemment :

  • Clés string : se comportent de la même façon — les valeurs ultérieures écrasent les précédentes.
  • Clés entières : array_merge() les renumérote séquentiellement, de sorte que les valeurs sont ajoutées plutôt qu'écrasées. array_replace() conserve les clés entières et écrase celles qui correspondent.
<?php

$a = [0 => "zero", 1 => "one"];
$b = [1 => "ONE", 2 => "two"];

print_r(array_merge($a, $b));   // integer keys renumbered
print_r(array_replace($a, $b)); // integer keys preserved

?>

Résultat :

Array
(
    [0] => zero
    [1] => one
    [2] => ONE
    [3] => two
)
Array
(
    [0] => zero
    [1] => ONE
    [2] => two
)

Consultez array_merge() pour la comparaison complète.

Conclusion

En conclusion, la fonction array_replace en PHP offre un moyen pratique de mettre à jour des arrays en remplaçant leurs valeurs par des valeurs provenant d'autres arrays. Grâce à sa syntaxe simple et à ses paramètres flexibles, elle peut être utilisée dans une grande variété de situations, ce qui en fait un outil essentiel pour les développeurs PHP. Que vous travailliez sur un projet simple ou complexe, la fonction array_replace peut contribuer à rationaliser votre processus de développement et à rendre votre code plus efficace.

Pratique

Pratique
Que fait la fonction array_replace() en PHP ?
Que fait la fonction array_replace() en PHP ?
Was this page helpful?