PHP

Unisci In Array Annidati

Funzione array_merge_recursive() in PHP: unire più array mantenendo tutte le chiavi e i valori duplicati, con esempi e laboratorio guidato.


🔄 Unire più Array con array_merge_recursive() in PHP

La funzione array_merge_recursive() è una versione avanzata di array_merge(): invece di sovrascrivere i valori che hanno la stessa chiave, li unisce in array annidati. Questo significa che conserva tutti i dati provenienti dagli array originali.


1. Sintassi

array_merge_recursive(array1, array2, ...);
  • array1, array2, ... → gli array da unire.
  • Ritorna: un nuovo array combinato con tutte le chiavi e i valori, inclusi quelli duplicati.

2. Differenza principale con array_merge()

Quando due array hanno la stessa chiave:

  • array_merge() → sovrascrive il valore precedente.
  • array_merge_recursive() → unisce i valori in un array annidato.

3. Esempio base

<?php
$a = ["colore" => "rosso", "frutta" => "mela"];
$b = ["colore" => "verde", "vegetale" => "pisello"];

$unito = array_merge_recursive($a, $b);

print_r($unito);
?>

Array
(
    [colore] => Array
        (
            [0] => rosso
            [1] => verde
        )

    [frutta] => mela
    [vegetale] => pisello
)

Come puoi vedere, i valori di colore sono stati uniti in un array, non sovrascritti.


4. Esempio con chiavi numeriche

Se le chiavi sono numeriche, i valori vengono semplicemente aggiunti in fondo all’array:


<?php
$a = [1, 2, 3];
$b = [4, 5];

$unito = array_merge_recursive($a, $b);

print_r($unito);
?>

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

5. Esempio pratico: unire dati di profili

Immagina di avere due array di dati provenienti da fonti diverse per lo stesso utente:


<?php
$profilo1 = [
    "nome" => "Luca",
    "hobby" => ["lettura", "sport"]
];

$profilo2 = [
    "hobby" => ["musica", "viaggi"],
    "eta" => 25
];

$unito = array_merge_recursive($profilo1, $profilo2);

print_r($unito);
?>

Array
(
    [nome] => Luca
    [hobby] => Array
        (
            [0] => lettura
            [1] => sport
            [2] => musica
            [3] => viaggi
        )
    [eta] => 25
)

I due array di hobby sono stati fusi insieme in un unico array di valori.


6. Attenzione alla profondità

array_merge_recursive() unisce in modo ricorsivo, cioè se trova altri array annidati, continuerà a unirli anch’essi. Questo può creare strutture complesse in caso di dati profondamente annidati.


7. Differenze con funzioni simili
FunzioneChiavi duplicateComportamento
array_merge()SovrascritteIl valore dell’array successivo sostituisce il precedente.
array_merge_recursive()MantenuteI valori vengono uniti in array annidati.
+ (operatore di unione)IgnorateIl primo valore con quella chiave viene mantenuto.


LABORATORIO

Unire array mantenendo tutte le chiavi con array_merge_recursive()

In questo laboratorio imparerai a unire array in modo che tutti i valori vengano conservati, anche quelli che condividono la stessa chiave. È molto utile per fondere dati o configurazioni da più fonti.


1 Unire array con chiavi duplicate

Crea un file chiamato array-merge-recursive.php e inserisci questo codice:


<?php
$a = ["colore" => "rosso", "frutta" => "mela"];
$b = ["colore" => "verde", "vegetale" => "pisello"];

$unito = array_merge_recursive($a, $b);

echo "<h3>Array unito con chiavi duplicate:</h3>";
print_r($unito);
?>
    

2 Unire array con valori multipli

Prova a unire dati con chiavi che contengono già array:


<?php
$profilo1 = [
    "nome" => "Luca",
    "hobby" => ["lettura", "sport"]
];

$profilo2 = [
    "hobby" => ["musica", "viaggi"],
    "eta" => 25
];

$unito = array_merge_recursive($profilo1, $profilo2);

echo "<h3>Array unito con array annidati:</h3>";
print_r($unito);
?>
    

3 Combinare array numerici e associativi

Puoi anche unire array con chiavi miste:


<?php
$a = ["animali" => ["cane", "gatto"]];
$b = ["animali" => ["pesce"], "piante" => ["rosa", "tulipano"]];

$unito = array_merge_recursive($a, $b);

echo "<h3>Unione di array complessi:</h3>";
print_r($unito);
?>
    

4 Test e analisi

  • Esegui gli script e osserva come i valori con la stessa chiave vengono uniti in array.
  • Prova con array annidati più profondi per vedere la fusione ricorsiva.
  • Confronta i risultati con array_merge() e nota la differenza.
  • Usa questa funzione per fondere dati da più sorgenti senza perdere informazioni.