Heim >Backend-Entwicklung >PHP-Tutorial >Der beste Weg, Arrays zu deduplizieren und Schlüsselnamen in PHP beizubehalten

Der beste Weg, Arrays zu deduplizieren und Schlüsselnamen in PHP beizubehalten

PHPz
PHPzOriginal
2024-05-01 13:00:021053Durchsuche

Es gibt zwei beste Möglichkeiten, Arrays zu deduplizieren und Schlüsselnamen in PHP beizubehalten: array_unique(): Es kann Schlüsselnamen deduplizieren, aber nicht beibehalten und das Array neu indizieren. Benutzerdefinierte Funktion array_unique_preserve_keys(): Verwenden Sie Hashwerte, um Werte zu vergleichen, wodurch Duplikate entfernt und Schlüsselnamen beibehalten werden können.

PHP 中对数组去重并保持键名的最佳方法

Der beste Weg, Arrays zu deduplizieren und dabei die Schlüsselnamen in PHP beizubehalten

In PHP bedeutet Array-Deduplizierung das Entfernen doppelter Werte, während die Schlüsselnamen unverändert bleiben. Dies ist nützlich, wenn Sie mit Daten aus verschiedenen Quellen arbeiten, die möglicherweise doppelte Elemente enthalten, z. B. aus mehreren Formularübermittlungen oder Datenbankabfragen.

Methode 1: array_unique()

Die Funktion array_unique() ist eine integrierte PHP-Funktion zur Deduplizierung von Arrays. Es akzeptiert ein Array als Eingabe und gibt ein neues Array zurück, in dem doppelte Werte entfernt wurden. array_unique() behält jedoch keine Schlüsselnamen bei, sondern indiziert das Array neu, beginnend bei 0.

Beispiel:

$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a'];

$result = array_unique($arr);

print_r($result); // 输出:['a', 'b', 'c', 'd', 'e']

Methode 2: Benutzerdefinierte Funktion

Um die Schlüsselnamen beizubehalten, können wir eine benutzerdefinierte Funktion schreiben, um das Array zu deduplizieren. Diese Methode verwendet ein assoziatives Array und vergleicht den Hash jedes Werts, um festzustellen, ob es sich um ein Duplikat handelt.

Beispiel:

function array_unique_preserve_keys($arr)
{
    $hash = [];
    $unique_arr = [];

    foreach ($arr as $key => $value)
    {
        $hash_value = md5($value);
        if (!isset($hash[$hash_value]))
        {
            $hash[$hash_value] = 1;
            $unique_arr[$key] = $value;
        }
    }

    return $unique_arr;
}

$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a'];

$result = array_unique_preserve_keys($arr);

print_r($result); // 输出:['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e']

Praktisches Beispiel:

Nehmen wir an, wir haben ein Array aus einer Formularübermittlung, das doppelte Benutzernamen und E-Mail-Adressen enthält. Durch die Deduplizierung mit der Funktion array_unique_preserve_keys() können wir doppelte Datensätze entfernen und gleichzeitig den Benutzernamen des Benutzers beibehalten.

$form_data = [
    ['username' => 'john', 'email' => 'john@example.com'],
    ['username' => 'jane', 'email' => 'jane@example.com'],
    ['username' => 'john', 'email' => 'john@example.org'],
    ['username' => 'mark', 'email' => 'mark@example.net']
];

$unique_users = array_unique_preserve_keys($form_data);

print_r($unique_users); // 输出:['john' => ['username' => 'john', 'email' => 'john@example.com'], 'jane' => ['username' => 'jane', 'email' => 'jane@example.com'], 'mark' => ['username' => 'mark', 'email' => 'mark@example.net']]

Das obige ist der detaillierte Inhalt vonDer beste Weg, Arrays zu deduplizieren und Schlüsselnamen in PHP beizubehalten. 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