Page 1 sur 1

variables aléatoires

Posté : 18 juil. 2014, 15:02
par Gunner
Bonjour,
Lle code ressort les noms ayant le plus de photos, et j'ai ressorti les 20 premiers), cela fait de trop, et j'aurai souhaité sortir aléatoirement 4 variables en gardant leur désignation.

J'ai donc pensé à un array_rand, le soucis est comment intégré les variables pour les mettre en array ?

Merci de votre aide :)

Code : Tout sélectionner

$directory = 'images'; $filenames = array(); $iterator = new DirectoryIterator($directory); foreach ($iterator as $fileinfo) { if ($fileinfo->isFile() && $fileinfo->getExtension()== 'jpg') { $f = substr($fileinfo->getFilename(),0,strrpos($fileinfo->getFilename(),'_')); if (isset($filenames[$f])) $filenames[$f]++; else $filenames[$f] = 1; } } $i= 0; arsort($filenames); foreach($filenames as $cle => $element) { $tableau[] = $cle; $i++; if ($i ==20) break; } $G1 = "$tableau[0]"; $G2 = "$tableau[1]"; $G3 = "$tableau[2]"; $G4 = "$tableau[3]"; $G5 = "$tableau[4]"; $G6 = "$tableau[5]"; $G7 = "$tableau[6]"; $G8 = "$tableau[7]"; $G9 = "$tableau[8]"; $G10 = "$tableau[9]"; $G11 = "$tableau[10]"; $G12 = "$tableau[11]"; $G13 = "$tableau[12]"; $G14 = "$tableau[13]"; $G15 = "$tableau[14]"; $G16 = "$tableau[15]"; $G17 = "$tableau[16]"; $G18 = "$tableau[17]"; $G19 = "$tableau[18]"; $G20 = "$tableau[19]";

Re: variables aléatoires

Posté : 18 juil. 2014, 15:22
par sirakawa
Il doit suffire de mettre un $indice= 0; avant le foreach
et dans le foreach, tu tires une vaiable aleatoire 0 ou 1
si 1 tu intègres le nom d'image et tu incrémentes $indice

(on pourrait ausi mettre un while)

tu asaussi cette requete ( à adapter):

select * from mots order by rand() limit 4;

Re: variables aléatoires

Posté : 20 juil. 2014, 22:10
par Gunner
Je teste cela cette semaine et vous fait un retour.
Merci pour la piste :)

Re: variables aléatoires

Posté : 21 juil. 2014, 07:58
par sirakawa
Le retour, si ça marche, peut $être simplement de mettre le sujet en résolu...

Re: variables aléatoires

Posté : 24 juil. 2014, 16:16
par Gunner
Bonjour,
Je viens de tester;
Ca ne semble pas être bon (ou je n'ai pas compris comment l'appliquer).

En effet incrémenter $indice revient au

Code : Tout sélectionner

$i= 0; arsort($filenames); foreach($filenames as $cle => $element) { $tableau[] = $cle; $i++; if ($i ==20) break;
déjà présent, non ?

Or le but serait de sortir 4 variables aléatoires sur les 20 premières.
Merci.

Re: variables aléatoires

Posté : 24 juil. 2014, 18:01
par sirakawa
La requête sql est plus simple et plus économique.
Si non
$indice= 0;
foreach($filenames as $cle => $element)
      {
          $integrer = rand (0,1);
          if (($integrer == 1) and ($indice < 4))
         {
               $tableau[] =  $cle;
                $indice ++;
         }
}
Ce serait évidemment mieux avec un while

Re: variables aléatoires

Posté : 28 juil. 2014, 16:48
par Gunner
Résolu, merci :)