Using the + sign to merge arrays in php


Today came across code that used the + sign to merge two associative php arrays. At first I thought it was broken but turns out you can indeed merge two arrays with the + sign.

\$album = array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
);
\$album_meta_data = array(
'upc' => '486898161589',
'price' = '11.98'
);

\$output = \$album + \$album_meta_data;

--------OUTPUT--------
array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
'upc' => '486898161589',
'price' = '11.98'
)

Another way to use it would be to add the album meta data directly to the album array.

\$album = array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
);
\$album_meta_data = array(
'upc' => '486898161589',
'price' = '11.98'
);

\$album += \$album_meta_data;

--------OUTPUT--------
array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
'upc' => '486898161589',
'price' = '11.98'
)

If the key exists in both arrays then the first if used and the second is discarded, same as with array_merge.

\$album = array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
);
\$album_meta_data = array(
'title' => 'Coldplay',
'upc' => '486898161589',
'price' = '11.98'
);

\$album += \$album_meta_data;

--------OUTPUT--------
array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
'upc' => '486898161589',
'price' = '11.98'
)

the reverse

\$album = array(
'title' => 'King of Limbs',
'band' => 'Radiohead',
);
\$album_meta_data = array(
'title' => 'Coldplay',
'upc' => '486898161589',
'price' = '11.98'
);

\$album_meta_data += \$album;

--------OUTPUT--------
array(
'title' => 'King of Limbs',
'band' => 'Coldplay',
'upc' => '486898161589',
'price' = '11.98'
)