04/03/2011

plus rapide et facile qu'un array_merge : l'opérateur +

Aujourd'hui, j'ai envie de partager avec vous une astuce PHP peu connue, mais qui est bien pratique : l'union (+) de deux tableaux

Utiliser la fonction array_merge est un vrai casse-tête quand il s'agit  de fusionner des tableaux en préservant les clefs.

Or il existe un opérateur bien pratique : l'opérateur +, qui fusionne deux tableaux :

$t1 = array('a','b','d');
$t2 = array(3 => 'f',4 => 'g');
$t3 = $t1 + $t2;
print_r($t3);
<p>Array</p>
(
    [0] => a
    [1] => b
    [2] => d
    [3] => f
    [4] => g
)

Pratique non ?

Et en plus, utiliser l'opérateur + est légèrement (à peine) plus rapide qu'un array_merge classique (sur 10 000 occurrences de fusion de deux petits tableaux en PHP 5.3, sous Ubuntu, j'obtiens un très léger écart de 0.05 secondes ^^)

Attention, le comportement en cas de clefs communes est différent entre array_merge et + :

$array1 = array(
    'brand' => 'peugeot',
    'car' => '206',
    'color' => 'red'
);
$array2 = array(
    'brand' => 'renault',
    'car' => 'scenic',
    'color' => 'blue'
);

Avec array_merge : la dernière valeur rencontrée écrase la précédente :

$array4 = array_merge($array1, $array2);
print_r($array4);
Array
(
    [brand] => renault
    [car] => scenic
    [color] => blue
)

Avec l'opérateur +, la première valeur est conservée :

$array3 = $array1 + $array2;
print_r($array3);
Array
(
    [brand] => peugeot
    [car] => 206
    [color] => red
)
Merci à gege2061 de m'avoir fait remarquer une absence dans ce billet, désormais corrigée ;-)
blog comments powered by Disqus