array_replace_recursive în PHP

Tablouri (array) PHP 5.3+

Înlocuiește valorile cheie cu cheie, inclusiv în tablourile interioare. Ideal pentru setări implicite.

Sintaxă
array_replace_recursive(array $array, array ...$replacements): array

Ce face array_replace_recursive

array_replace_recursive funcționează ca array_replace, dar când la aceeași cheie găsește tablouri în ambele părți, intră în ele și înlocuiește doar cheile date. Restul cheilor interioare rămân.

Este metoda potrivită pentru a combina o configurare implicită cu una a utilizatorului, unde setările sunt grupate pe secțiuni.

Parametri

Parametru Descriere
$array Tabloul de pornire (de exemplu setările implicite).
$replacements Tablourile ale căror valori le înlocuiesc pe cele existente.

Ce returnează

Un tablou nou.

Exemple

Exemplul 1: Setări implicite completate

<?php
$implicit = ["db" => ["host" => "localhost", "port" => 3306], "debug" => false];
$local = ["db" => ["host" => "db.dexblog.ro"]];

var_export(array_replace_recursive($implicit, $local));

Rezultat

array (
  'db' => 
  array (
    'host' => 'db.dexblog.ro',
    'port' => 3306,
  ),
  'debug' => false,
)

Exemplul 2: Diferența față de array_replace

array_replace înlocuiește tot tabloul db, așa că portul dispare.

<?php
$implicit = ["db" => ["host" => "localhost", "port" => 3306]];
$local = ["db" => ["host" => "db.dexblog.ro"]];

print_r(array_replace($implicit, $local));

Rezultat

Array
(
    [db] => Array
        (
            [host] => db.dexblog.ro
        )

)

Greșeli frecvente

  • Confunzi funcția cu array_merge_recursive. Aceea păstrează ambele valori într-un tablou, în loc să o înlocuiască pe prima.

Comenzi înrudite

  • array_replace: Înlocuiește valorile unui tablou cu valorile de la aceleași chei din alte tablouri.
  • array_merge_recursive: Unește tablouri, inclusiv tablourile din interior. Valorile cu aceeași cheie text sunt păstrate împreună.
  • array_merge: Unește două sau mai multe tablouri într-unul singur.