php += で配列追加できるのに、array_merge で追加されない!は、キーが数値であることが原因だった | クズリーマンのカス備忘録

php += で配列追加できるのに、array_merge で追加されない!は、キーが数値であることが原因だった

php-logo php
スポンサーリンク

環境

php7.2

 

事象

array_merge を使って、配列に配列を追加したつもりが、追加されない。

 

$array1 = array('1234' => 'hoge');
$array2 = array('0987' => 'fuga');
array_merge($array1, $array2);
var_dump($array1);

添字が数値だからリセットされるよ。

(自分がやったときはもっと複雑なコードだったので発見が遅くなった。)

 

PHP: array_merge - Manual

公式マニュアルにしっかりと載ってる。

入力配列の中にある数値添字要素の添字の数値は、 結果の配列ではゼロから始まる連続した数値に置き換えられます。

数値添字が振りなおされることに注意!

 

 

数値を維持したまま連想配列をついかしたくば、

array_mergeでなく、

+=

を使うべきですな。

 

$array1 += $array2;

 

 

 

 

 

 

 

コメント

タイトルとURLをコピーしました