Problème de doublon php, fonction in_array()

Bonjour,

je souhaite créer un qcm, ici je veux effectuer et tirage aléatoire du nombre de questions ouvertes choisies par l'utilisateur ($questO) parmi le nombre total de questions ouvertes ($N), j'ai écrit le code suivant qui ne fonctionne pas car j'ai encore des doublons. Need help thanks


if($questO==0)
{ echo"<h1>Pas de questions ouvertes</h1>";
}
else
{ for($i=1;$i<=$questO;$i++)
{ do
{ $val=rand(1,$NO);
If(in_array($val,$tableauO)==true)
{ $rep=true;
}
else
{ $rep=false;
}
}
while($rep=false);
$tableauO[$i-1]=$val;
echo $tableauO[$i-1];
}
}

3 réponses

  1. Bonjour

    ton while($rep=false); est incorrect à deux titres :
    il faut == pour comparer, et non pas simplement =
    C'est si $rep==true qu'il faut reboucler, pas si $rep==false
    1
    1. Modérateur
      Je tu peux utiliser shuffle> et <ital>array_slice
      johand@osiris: ~/src/php $ cat qcm.php 
      <?php 
      $nombre_de_questions = 10; 
      $selected = 4; 
      $all = range(1, $nombre_de_questions); 
      shuffle($all); 
      $qcm = array_slice( $all, 1 , $selected); 
      
      foreach ( $qcm as $cnt) 
        { 
          printf("Question %02d\n", $cnt); 
        } 
      ?> 
      johand@osiris: ~/src/php $ php qcm.php  
      Question 02 
      Question 05 
      Question 09 
      Question 04


      Gates gave ^H sold you the windows.
      GNU gave us the whole house.(Alexandrin)
      1
      1. Merci beaucoup le père !
        petite erreur bête qui bloque longtemps quand on ne la voit pas
        0