Heim  >  Artikel  >  Backend-Entwicklung  >  Wie vermeide ich die Generierung benachbarter doppelter Elemente, wenn PHP-Arrays gemischt werden?

Wie vermeide ich die Generierung benachbarter doppelter Elemente, wenn PHP-Arrays gemischt werden?

王林
王林Original
2024-05-02 10:36:02737Durchsuche

PHP shuffle() kann benachbarte doppelte Elemente generieren. Um dies zu vermeiden, können Sie die folgenden zwei Methoden verwenden: Verwenden Sie den a-Hash-Algorithmus: Generieren Sie einen Hash für jeden Wert und behalten Sie nur den Wert bei, der dem eindeutigen Hash-Wert entspricht. Markieren und Mischen verwenden: Markieren Sie den verwendeten Index und löschen Sie den markierten Indexwert vor dem Mischen.

Wie vermeide ich die Generierung benachbarter doppelter Elemente, wenn PHP-Arrays gemischt werden?

Vermeiden Sie benachbarte doppelte Elemente, wenn das PHP-Array gemischt wird.

In PHP ist es eine häufige Anforderung, die Funktion shuffle() zum Mischen der Array-Reihenfolge zu verwenden. Allerdings kann diese Funktion benachbarte doppelte Elemente erzeugen. Um dies zu vermeiden, können wir die folgende Methode verwenden:

Implementierung:

  1. Verwenden Sie a-Hash:
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. Verwenden Sie Mark and Shuffle:
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;
}

A Aktueller Fall:

$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

$shuffled_array = shuffle_array_avoid_adjacent_duplicates($array);

print_r($shuffled_array);

Ausgabe:

Array
(
    [0] => 5
    [1] => 2
    [2] => 9
    [3] => 10
    [4] => 7
    [5] => 4
    [6] => 3
    [7] => 8
    [8] => 6
    [9] => 1
)

Der obige Code verwendet einen a-Hash-Algorithmus, um benachbarte doppelte Elemente zu vermeiden und ein ungeordnetes Array zu generieren.

Das obige ist der detaillierte Inhalt vonWie vermeide ich die Generierung benachbarter doppelter Elemente, wenn PHP-Arrays gemischt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn