Afficher 10 phrases au hasard au lieu d'une seule

WRInaute passionné
Bonjour,

J'utilise le script ci-dessous pour afficher une phrase au hasard. Je voudrais maintenant en afficher 10 d'un coup, d'un seul.

$compteur = 0;
$fp = fopen("phrase.txt", "r");
while (!feof($fp)) {
$enr = fgets($fp, 4096);
$tab[] = $enr;
$compteur++;
}
srand((double)microtime()*1000000);
$nbr = rand(0, ($compteur-1));
echo '

'.$tab[$nbr].'

Comment adapter ce script sans avoir à le copier/coller dix fois de suite :?

Merci d'avance :D
 
WRInaute accro
Code:
$fp = file('phrase.txt');

$i = 0;
while ($i < 10) {
     srand((double)microtime()*1000000);
     $nbr = rand(0, (count($fp)-1));

     echo $fp[$nbr];
     $i++;
}

Mais la, tu a des chances d'avoir deux fois la même dans les 10.
 
WRInaute passionné
Merci kazhar !

C'est pas trop grave si y'a des doublons.

Tu l'as fait de tête à l'instant ou t'en avais un tout prêt dans le genre ?
 
WRInaute impliqué
sinon tu peux utiliser la fonction dont on avait discuté dans ce sujet, et là tu n'auras pas de doublons

Code:
$compteur = 0;
$fp = fopen("phrase.txt", "r");
while (!feof($fp)) {
  $enr = fgets($fp, 4096);
  $tab[] = $enr;
  $compteur++;
}

$aff = distinctRand(10,$compteur-1,0);

foreach($aff as $nbr){
  echo $tab[$nbr];
}


function distinctRand($nb,$max,$min=1) {
   $res = array();
   for($i=0 ; $i < $nb ; $i++) {
      $n = mt_rand($min,$max);
      while(in_array($n,$res)) {
         $n = mt_rand($min,$max);
      }
      $res[$i] = $n;
   }
   return $res;
}

DISCLAIMER : J'ai pas testé !!

:wink:
 
WRInaute passionné
Pas le courrage de tester ton code La Chaise sauvage, ça fonctionne avec celui de kazhar, mais je te remercie quand même.
Ca servira sans doute à quelqu'un d'autre. ;-)
 
Discussions similaires
Haut