php obtenir deux différents aléatoire des éléments d'un tableau
À partir d'un tableau
$my_array = array('a','b','c','d','e');
Je veux obtenir deux DIFFÉRENTS éléments aléatoires.
Avec le code suivant:
for ($i=0; $i<2; $i++) {
$random = array_rand($my_array); # one random array element number
$get_it = $my_array[$random]; # get the letter from the array
echo $get_it;
}
il est possible d'obtenir deux fois la même lettre. J'ai besoin de l'en empêcher. Je veux toujours obtenir deux différents éléments du tableau. Quelqu'un peut-il me dire comment faire cela?
Grâce
OriginalL'auteur creativz | 2010-02-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours supprimer l'élément que vous avez sélectionné la première fois, alors vous ne serait pas le prendre à nouveau. Si vous ne voulez pas modifier le tableau de créer une copie.
unset($array[$key])
unset($my_array[$random]);
Pourquoi utiliser une boucle? Pourquoi ne pas simplement obtenir la première valeur aléatoire, le retirer de la pile, puis obtenir le deuxième? Vous n'avez pas besoin de retirer la deuxième.
J'ai utilisé la boucle parce que cela signifie un minimum de changements de creativz du code. Plus il est facile d'étendre le code pour récupérer un nombre arbitraire d'éléments
OriginalL'auteur pheelicks
array_rand() peut prendre deux paramètres, le tableau et le nombre de (différentes), les éléments que vous souhaitez récupérer.
est-ce toujours le cas pour les versions récentes de php? Il y a eu un certain nombre de plaintes au sujet de certaines fonctions aléatoires, esp. sur win32. J'ai pensé qu'ils ont été (un peu) fixe.
Je ne sais pas vraiment. Je ne l'ai pas testé moi-même.
OriginalL'auteur VolkerK
Quoi à ce sujet?
Pour les tableaux de très grande taille cela peut être assez lente, mais comme vous l'avez certainement n'avez pas de lecture aléatoire de l'ensemble de la gamme juste pour obtenir deux éléments.
Cela ne faisait pas partie de la spécification ;).
OriginalL'auteur middus
OriginalL'auteur goat
voici une fonction que j'utilise pour tirer plusieurs éléments aléatoires à partir d'un tableau.
OriginalL'auteur jbrahy
Voici comment je l'ai fait. Espérons que cela aide quelqu'un dans la confusion.
OriginalL'auteur Gwapedwink
Vous pouvez mélanger, puis choisissez-en une tranche de deux. Utiliser une autre variable si vous voulez garder le tableau d'origine intact.
OriginalL'auteur Selay
Obtenir le premier au hasard, puis utiliser une boucle do..while pour obtenir le deuxième:
Cela vous permettra de garder en boucle jusqu'à ce random2 n'est pas le même que random1
Il doit fonctionner car array_rand retourne un index et non pas l'élément lui-même.
Oh pinaise. Désolé adam
Ce n'est pas le plus gracieux de la solution (mon argent est sur middus) mais il fonctionne. Tous les commentaires/les raisons de la downvoters?
OriginalL'auteur Adam Hopkinson