Attribuer nombre pour données d'un tableau

Coutcout86 Messages postés 219 Statut Membre -  
xamurai Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit souci dans ma programmation en PHP. Voila j'ai un tableau de données comme ceci :

$tableau = array ('Pierre','Paul','Jack');

Et j'aimerai pour chaque données (donc pour chaque prénom leur attribuer un numéro mais au hasard. Donc j'ai utilisé la fonction rand de PHP et voila ce que cela donne :

foreach($tableau as $numPlace)
{
$numPlace = rand(1,3);
}

echo $tableau ;

Mais ce ne marche pas d'où peut venir mon erreur ?

Merci de bien me répondre
Romain.
A voir également:

2 réponses

xamurai Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   15
 
Ta question est un peu mal formuler, mais j'ai l'impression que tu aimerais que les prenoms soient classés au hasard dans le tableau:

 <?php
     $tableau = array ('Pierre','Paul','Jack'); 
     $length = count($tableau);
      
      $tableaufinal = array();
      $position = 0;
     while($length > 0)
     {
        $r = rand(0 , $length);
         $tableaufinal[$position] = $tableau[$r];
         
          $tableau[$r] = $tableau[0];
          array_shift($tableau);
         
          ++ $position;
         --$length;
      }

       $print_r($tableau_final);
?>

2
chico200987 Messages postés 856 Statut Membre 144
 
Très astucieux, mais ne serait-ce pas

$r = rand(0 , $length - 1);


Puisque c'est la valeur maximale a retourner, et que $length renvoi 3 au début, si le random donne 3.. Ca plante par un index out of range non ?
0
Akronos Messages postés 163 Statut Membre 32
 
Oui c'est $length - 1.
0
xamurai Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   15
 
oui, c'est vrai... j'ai écris la fonction rapidement cet après-midi lorsque j'etais encore au boulot
0
Coutcout86 Messages postés 219 Statut Membre
 
A non pas du tout ! Effectivement ma question est mal formulé. Je vais expliqué concretement j'ai une liste d'élèves ( 68 personnes) avec un amphi (68 places) dont les places sont numérotés de 1 à 68 et enfaite j'aimerai placé au hasard les élèves sur une place. Voila ce que je veux faire. Est-ce plus compréhensible?? Désolé de mal formuler ma demande

Merci de bien me répondre
Romain.
0
Akronos Messages postés 163 Statut Membre 32
 
Au final, si les prénoms sont classé au hasard dans le tableau, ton but n'est-il pas atteint?!
0
Coutcout86 Messages postés 219 Statut Membre
 
Non parce que mon tableau avec lequel il y a le nom des élèves sera classé par ordre alphabétique car la liste viendra d'un export excel. Et une fois que j'ai cette liste d'élèves il faut que je les place au hasard dans l'amphi donc il faut que j'attribue au hasard un numéro de place. Je veux pas que Monsieur A se retrouve à la place 1 et que Monsieur B à place 2
0
chico200987 Messages postés 856 Statut Membre 144
 
Si tu gardes tes deux tableaux, celui qui contient tes élèves par ordre alphabétique et celui classe aleatoirement tu peux t'en sortir en prenant l'index de ton élève du premier tableau comme place dans la liste classée et l'index du même élève dans le deuxième tableau pour son attribution de place..
0
Coutcout86 Messages postés 219 Statut Membre
 
Désolé mais j'ai pas tout compris lol tu peut pas me donner un exemple ?? :s
0
Akronos Messages postés 163 Statut Membre 32
 
Exemple de résultat:

Tableau 1 (liste classée):
[0]=>Bernardo
[1]=>Jacques
[2]=>John
[3]=>Mamadou
[4]=>Rachid
[5]=>Yang

Tableau 2 (liste aléatoire):
[0]=>Mamadou
[1]=>Rachid
[2]=>Yang
[3]=>Bernardo
[4]=>Jacques
[5]=>John

Ton premier tableau les tri alphabétiquement, ton deuxième tableau te donnes les places grâce à l'index. Ainsi Yang sera à la place 2 et non à la 5.
0