PHP shuffle() peut générer des éléments en double adjacents. Pour éviter cela, vous pouvez utiliser les deux méthodes suivantes : Utiliser l'algorithme a-Hash : générer un hachage pour chaque valeur et ne conserver que la valeur correspondant à la valeur de hachage unique. Utiliser mark et shuffle : marquez l'index utilisé et supprimez la valeur d'index marquée avant de mélanger.
Évitez les éléments en double adjacents lorsque le tableau PHP est mélangé
En PHP, il est courant d'utiliser la fonction shuffle()
pour mélanger l'ordre du tableau. Cependant, cette fonction peut générer des éléments en double adjacents. Pour éviter cela, nous pouvons utiliser la méthode suivante :
Mise en œuvre :
function shuffle_array_avoid_adjacent_duplicates(array &$array) { $aHash = []; $result = []; foreach ($array as $key => $value) { $ah = md5($value); if (!isset($aHash[$ah])) { $aHash[$ah] = true; $result[] = $value; } } shuffle($result); return $result; }
function shuffle_array_avoid_adjacent_duplicates(array &$array) { $marked = []; foreach ($array as $key => $value) { $marked[$key] = false; } while (count($marked)) { $key = array_rand($marked); $result[] = $array[$key]; unset($marked[$key]); unset($array[$key]); } shuffle($result); return $result; }
Cas réel :
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $shuffled_array = shuffle_array_avoid_adjacent_duplicates($array); print_r($shuffled_array);
Sortie :
Array ( [0] => 5 [1] => 2 [2] => 9 [3] => 10 [4] => 7 [5] => 4 [6] => 3 [7] => 8 [8] => 6 [9] => 1 )
Le code ci-dessus utilise l'algorithme a-Hash pour éviter les éléments en double adjacents et générer un tableau désordonné.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!