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 ;-)
Pochette du livre Qualité logicielle pour les développeurs

Si ce blog vous plaît, vous trouverez de nombreux conseils pratiques dans mon livre. C'est une bonne manière de me soutenir et de m'encourager

Qualité logicielle pour les développeurs

Le livre qui vous aide à améliorer la qualité de vos projets.

  • ✅ Comment mettre en place des tests automatisés pérennes ;
  • ✅ Comment analyser la qualité de votre code ;
  • ✅ Faites adhérer votre équipe à la qualité logicielle.
blog comments powered by Disqus

© Jean-François Lépine, 2013 - 2024