Petite optimisation d'un vieux bout de code qui trainait

Avant

[php]
   if (isset($arrItem)) {
      $items_selected_nbr = sizeof($arrItem);

    if ($items_selected_nbr>2) {

      srand((double)microtime() * 1000000);
      $itemList[0] = rand(0,($items_selected_nbr) - 1);

      do {
        srand((double)microtime() * 1000000);
        $rand = rand(0,($items_selected_nbr) - 1);
      } while (in_array($rand, $itemList));
      $itemList[1] = $rand;

      do {
        srand((double)microtime() * 1000000);
        $rand = rand(0,($items_selected_nbr) - 1);
      } while (in_array($rand, $itemList));
      $itemList[2] = $rand;


      $itemList[0] = $arrItem[$itemList[0]];
      $itemList[1] = $arrItem[$itemList[1]];
      $itemList[2] = $arrItem[$itemList[2]];
?>

Après

[php]
<?php
$itemList = array_intersect_key($arrItem, array_flip(array_rand($arrItem, min(3,count($arrItem)))));
?>

Le source pour tester

En fait l'ancien code retourne toujours 3 éléments qui se suivent. et rien du tout si le tableau initial est plus petit que 3