>  기사  >  백엔드 개발  >  PHP 배열을 섞을 때 인접한 중복 요소 생성을 방지하는 방법은 무엇입니까?

PHP 배열을 섞을 때 인접한 중복 요소 생성을 방지하는 방법은 무엇입니까?

王林
王林원래의
2024-05-02 10:36:02696검색

PHP shuffle()은 인접한 중복 요소를 생성할 수 있습니다. 이를 방지하려면 다음 두 가지 방법을 사용할 수 있습니다. a-Hash 알고리즘을 사용합니다. 각 값에 대한 해시를 생성하고 고유한 해시 값에 해당하는 값만 유지합니다. 마크 앤 셔플 사용: 셔플하기 전에 사용된 인덱스를 마크하고 마크된 인덱스 값을 삭제합니다.

PHP 배열을 섞을 때 인접한 중복 요소 생성을 방지하는 방법은 무엇입니까?

PHP 배열을 섞을 때 인접한 중복 요소를 피하세요

PHP에서는 배열 순서를 섞기 위해 shuffle() 함수를 사용하는 것이 일반적인 요구 사항입니다. 그러나 이 함수는 인접한 중복 요소를 생성할 수 있습니다. 이를 방지하려면 다음 방법을 사용할 수 있습니다.

구현:

  1. 해시 사용:
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;
}
  1. 표시 및 셔플 사용:
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);

위 코드는 a-Hash 알고리즘을 사용하여 인접한 중복 요소를 피하고 무질서한 배열을 생성합니다.

위 내용은 PHP 배열을 섞을 때 인접한 중복 요소 생성을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.