W3docs

PHP Array Replace: Guida Completa

Scopri come usare array_replace in PHP per sostituire i valori di un array con quelli di uno o più array successivi, con esempi pratici.

In PHP, la funzione array_replace() sostituisce i valori di un array base con i valori provenienti da uno o più array di sostituzione, abbinando per chiave. Per ogni chiave presente in un array successivo, quel valore sovrascrive il valore nell'array base; le chiavi non ancora presenti vengono aggiunte in coda. Gli array originali non vengono mai modificati — array_replace() restituisce un nuovo array.

Questa pagina illustra la sintassi e i parametri di array_replace(), come gestisce le chiavi string e numeriche, le differenze rispetto a array_merge(), e l'avvertenza che questa funzione non è ricorsiva (usa array_replace_recursive() quando è necessario unire array annidati).

Quando usarla

Ricorri a array_replace() quando vuoi sovrascrivere dei valori predefiniti: definisci un array base con i valori di default, poi passa le sostituzioni fornite dall'utente come secondo argomento. Poiché la corrispondenza avviene per chiave (non per posizione), è il metodo più pulito per unire array di configurazione in cui le chiavi hanno un significato specifico.

Sintassi

La sintassi della funzione array_replace è la seguente:

Sintassi della funzione PHP array_replace

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

array_replace() accetta almeno un array e un numero qualsiasi di array aggiuntivi. Scorre gli array di sostituzione da sinistra a destra: ogni valore la cui chiave esiste già in $array1 lo sovrascrive, mentre ogni nuova chiave viene aggiunta in coda. Gli array successivi hanno la precedenza su quelli precedenti. La funzione restituisce l'array risultante e lascia invariati tutti gli input.

Nota: le chiavi numeriche vengono abbinate allo stesso modo delle chiavi string — per valore letterale della chiave, non per posizione. Questa è la differenza fondamentale rispetto a array_merge(), che rinumera le chiavi intere.

Parametri

  • array1: È l'array iniziale i cui valori verranno sostituiti dai valori degli altri array.
  • array2: È l'array i cui valori sostituiranno i valori in array1.
  • ...: Sono array aggiuntivi facoltativi, i cui valori verranno usati per sostituire ulteriormente i valori in array1.

Esempi

Vediamo alcuni esempi per capire come funziona array_replace.

Esempio 1: Sostituzione dei valori in un singolo array

Esempio PHP 1: Sostituzione dei valori in un singolo array con array_replace

php— editable, runs on the server

Output:

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

Qui la chiave a esiste in entrambi gli array, quindi $array2 la sovrascrive (applepeach). La chiave b esiste solo in $array1, quindi rimane banana. La chiave c esiste solo in $array2, quindi viene aggiunta in coda al risultato.

Esempio 2: Sostituzione dei valori in più array

Esempio PHP 2: Sostituzione dei valori in più array con array_replace

php— editable, runs on the server

Output:

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

Gli array di sostituzione vengono applicati da sinistra a destra. La chiave a viene impostata a peach da $array2. La chiave b parte come banana ma viene sovrascritta da $array3 con blueberry — vince l'ultimo array. Le chiavi c (da $array2) e d (da $array3) sono nuove, quindi vengono aggiunte in coda.

Esempio 3: Non è ricorsiva — usa array_replace_recursive()

array_replace() sostituisce interi valori, quindi un array annidato su una chiave corrispondente viene sostituito interamente invece di essere unito. Quando è necessaria una fusione profonda, usa array_replace_recursive().

Esempio PHP 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));

?>

Output:

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

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

)

Con array_replace() la port originale viene persa perché l'intero array db viene sostituito. array_replace_recursive() scende nell'array annidato e mantiene port.

array_replace() vs array_merge()

Entrambe le funzioni combinano array, ma trattano le chiavi in modo diverso:

  • Chiavi string: si comportano allo stesso modo — i valori successivi sovrascrivono quelli precedenti.
  • Chiavi intere: array_merge() le rinumera in modo sequenziale, quindi i valori vengono accodati invece di essere sovrascritti. array_replace() mantiene le chiavi intere e sovrascrive quelle corrispondenti.
<?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

?>

Output:

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

Vedi array_merge() per il confronto completo.

Conclusione

In conclusione, la funzione array_replace in PHP offre un modo comodo per aggiornare gli array sostituendo i loro valori con quelli di altri array. Grazie alla sintassi semplice e ai parametri flessibili, può essere impiegata in una grande varietà di situazioni, rendendola uno strumento essenziale per gli sviluppatori PHP. Che tu stia lavorando su un progetto semplice o complesso, la funzione array_replace può aiutarti a semplificare il processo di sviluppo e a rendere il tuo codice più efficiente.

Esercitati

Pratica
Cosa fa la funzione array_replace() in PHP?
Cosa fa la funzione array_replace() in PHP?
Was this page helpful?