Quelle est exactement la différence entre les fonctions shuffle
et array_rand
en PHP? Ce qui est plus rapide s'il n'y a pas de différence.PHP différence entre shuffle et array_rand
Merci
Quelle est exactement la différence entre les fonctions shuffle
et array_rand
en PHP? Ce qui est plus rapide s'il n'y a pas de différence.PHP différence entre shuffle et array_rand
Merci
Lorsqu'elle est appelée un tableau, shuffle
randomise l'ordre de tous les éléments de ce tableau.
Par exemple, la partie de code suivante:
$arr = array(1, 2, 3, 4, 5);
shuffle($arr);
var_dump($arr);
pourrait donner cette sortie:
array
0 => int 3
1 => int 1
2 => int 5
3 => int 4
4 => int 2
tout le tableau lui-même se modifie.
Quand appelé sur un réseau, array_rand
rendements d'un ou plusieurs éléments de ce tableau, choisis au hasard.
Par exemple, la partie de code suivante:
$arr = array(1, 2, 3, 4, 5);
$randomly_selected = array_rand($arr, 3);
var_dump($randomly_selected);
pourrait donner tis type de sortie:
array
0 => int 0
1 => int 2
2 => int 3
Un sous-ensemble du tableau initial est retourné - et le tableau initial n'est pas modifié.
Notez que array_rand renvoie les clés de tableau, pas les éléments eux-mêmes. – Asciiom
shuffle
affecte les clés du tableau et utilise son paramètre par référence. shuffle
utilisé pour être faible en termes de randomisation dans les anciennes versions de PHP, mais ce n'est plus vrai.
array_rand
laisse le tableau d'origine intact et possède un paramètre optionnel pour vous permettre de sélectionner le nombre d'éléments que vous souhaitez retourner.
shuffle
réorganise un tableau dans un ordre aléatoire. cette fonction prend un tableau par référence, car il est en train de muter la structure interne de la matrice, non seulement en y accédant, tandis que array_rand
renvoie simplement un index aléatoire dans un tableau.
shuffle
modifie l'ordre des éléments d'un tableau. C'est une fonction de tri.
array_rand
renvoie n
(arguments [1], par défaut 1) éléments aléatoires du tableau. Il renvoie une clé (pour les arguments [1] == 1) ou un tableau de clés (pour les arguments [1]> 1) qui référencent les éléments du tableau (arguments [0]).
Shuffle()
prend l'ensemble du tableau et randomise la position des éléments dans celui-ci. [Note: Dans les versions antérieures de PHP, l'algorithme shuffle() était assez pauvre]
array_rand()
prend un tableau et renvoie une ou plusieurs entrées sélectionnées au hasard. L'avantage de array_rand() est qu'il laisse le tableau original intact.
En changeant $ non paramètre J'ai essayé l'extrait de code suivant pour tester les performances des deux fonctions.Même dans les grands réseaux, il n'y a pas beaucoup de différence. La plupart du temps entre le 1x10 -5 secondes et 5x10 -5
$time_start = microtime(true);
$rand_keys = array_rand($myArray, $no);
echo (microtime(true)-$time_start)."\n";
$time_start = microtime(true);
shuffle($myArray);
echo (microtime(true)-$time_start)."\n";
+1: bienvenue et bonne question, jamais prêté attention à ce que ... –
-1 bienvenue à SO et peut nous présenter vous aussi sur php.net! – Ejaz