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.