PHP shuffle()은 인접한 중복 요소를 생성할 수 있습니다. 이를 방지하려면 다음 두 가지 방법을 사용할 수 있습니다. a-Hash 알고리즘을 사용합니다. 각 값에 대한 해시를 생성하고 고유한 해시 값에 해당하는 값만 유지합니다. 마크 앤 셔플 사용: 셔플하기 전에 사용된 인덱스를 마크하고 마크된 인덱스 값을 삭제합니다.
PHP 배열을 섞을 때 인접한 중복 요소를 피하세요
PHP에서는 배열 순서를 섞기 위해 shuffle()
함수를 사용하는 것이 일반적인 요구 사항입니다. 그러나 이 함수는 인접한 중복 요소를 생성할 수 있습니다. 이를 방지하려면 다음 방법을 사용할 수 있습니다.
구현:
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; }
실제 사례: 아아아아
출력:
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $shuffled_array = shuffle_array_avoid_adjacent_duplicates($array); print_r($shuffled_array);
위 내용은 PHP 배열을 섞을 때 인접한 중복 요소 생성을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!