without - php merge two arrays by key




Impossibile concatenare 2 array in PHP (7)

Recentemente ho imparato come unire 2 array usando l'operatore + in PHP.

Ma considera questo codice ...

$array = array('Item 1');

$array += array('Item 2');

var_dump($array);

L'output è

array (1) {[0] => string (6) "Item 1"}

Perché non funziona? Saltare la stenografia e usare $array = $array + array('Item 2') non funziona neanche. Ha qualcosa a che fare con le chiavi?


È davvero un conflitto chiave. Quando si concatenano gli array, le chiavi duplicate non vengono sovrascritte.

Invece devi usare array_merge()

$array = array_merge(array('Item 1'), array('Item 2'));

Entrambi avranno una chiave di 0 e quel metodo di combinazione degli array collasserà i duplicati. Prova invece a usare array_merge() .

$arr1 = array('foo'); // Same as array(0 => 'foo')
$arr2 = array('bar'); // Same as array(0 => 'bar')

// Will contain array('foo', 'bar');
$combined = array_merge($arr1, $arr2);

Se gli elementi dell'array utilizzavano chiavi diverse, l'operatore + sarebbe più appropriato.

$arr1 = array('one' => 'foo');
$arr2 = array('two' => 'bar');

// Will contain array('one' => 'foo', 'two' => 'bar');
$combined = $arr1 + $arr2;

Modifica: aggiunto uno snippet di codice per chiarire


Prova array_merge.

$array1 = array('Item 1');

$array2 = array('Item 2');

$array3 = array_merge($array1, $array2);

Penso che sia perché non stai assegnando una chiave a nessuno, quindi entrambi hanno la chiave di 0, e il + non reindicizza, quindi cerca di scriverlo.


Questo funziona per gli array non associativi:

while(($item = array_shift($array2)) !== null && array_push($array1, $item));


Usa array_merge()
Vedi la documentazione qui:
http://php.net/manual/en/function.array-merge.php

Unisce gli elementi di uno o più array insieme in modo che i valori di uno vengano aggiunti alla fine del precedente. Restituisce la matrice risultante.


puoi usare l'operatore. $ array3 = $ array1. $ array2;


$array = array('Item 1');

array_push($array,'Item 2');

o

$array[] = 'Item 2';






concatenation