Heim >Backend-Entwicklung >PHP-Problem >So vergleichen Sie verschiedene Elemente eines Arrays in PHP

So vergleichen Sie verschiedene Elemente eines Arrays in PHP

PHPz
PHPzOriginal
2023-04-18 14:10:26727Durchsuche

In PHP ist der Vergleich verschiedener Elemente zwischen zwei Arrays eine häufige Notwendigkeit, zum Beispiel:

  • Vergleich zwischen zwei verschiedenen Versionen einer Website, ob ihre Seitenpfade unterschiedliche Teile haben
  • Vergleich zweier CSV-Dateien Verschiedene Zeilen zwischen
  • Vergleichen, ob die Die Tabellenstruktur unterscheidet sich zwischen zwei verschiedenen Datenbanken

In diesem Artikel werden verschiedene Methoden zum Vergleich verschiedener Elemente von Arrays in PHP vorgestellt.

Methode 1: Array_diff-Funktion verwenden

Die Array_diff-Funktion ist eine in PHP integrierte Funktion, die Array-Unterschiede vergleicht. Die Verwendung dieser Funktion ist wie folgt:

array array_diff ( array $array1 , array $array2 [, array $... ] )

Diese Funktion akzeptiert zwei Array-Parameter und gibt ein neues Array mit Elementen zurück im ersten Array, die im zweiten Array nicht erscheinen.

Der folgende Code vergleicht beispielsweise den Unterschied zwischen zwei Arrays:

$arr1 = [1, 2, 3, 4, 5];
$arr2 = [4, 5, 6, 7, 8];

$diff = array_diff($arr1, $arr2);

print_r($diff); // 输出 [1, 2, 3]

Obwohl die Funktion array_diff die unterschiedlichen Elemente zweier Arrays ermitteln kann, kann die Funktion falsche Ergebnisse liefern, wenn das Array doppelte Elemente enthält.

Zum Beispiel:

$arr1 = [1, 2, 3, 3, 3, 4, 5];
$arr2 = [3, 4, 5, 5, 5, 6, 7];

$diff = array_diff($arr1, $arr2);

print_r($diff); // 输出 [1, 2]

In diesem Beispiel sollte das Ergebnis des $diff-Arrays [1, 2, 3] sein, da es jedoch sowohl im $arr1- als auch im $arr2-Array mehrere „3“ und „5“ gibt , array_diff Die Funktion vergleicht Unterschiede nicht korrekt.

Methode 2: Verwenden Sie die Funktion array_diff_assoc

Die Funktion array_diff_assoc ist ebenfalls eine in PHP integrierte Funktion, aber diese Funktion vergleicht, ob die Schlüssel und Werte in den beiden Arrays gleich sind.

Die Verwendung dieser Funktion ist wie folgt:

array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )

Akzeptiert zwei oder mehr Array-Parameter und gibt alle Elemente im ersten Array zurück, die in anderen Arrays nicht vorhanden sind oder deren Schlüssel und Werte nicht gleich sind.

Zum Beispiel:

$arr1 = ["a" => 1, "b" => 2, "c" => 3];
$arr2 = ["a" => 1, "b" => 2, "c" => 4];

$diff = array_diff_assoc($arr1, $arr2);

print_r($diff); // 输出 ["c" => 3]

In diesem Beispiel ist das Ergebnis des $diff-Arrays ["c" => 3], da der Wert, der dem Schlüssel "c" im $arr1-Array entspricht, 3 ist, und das gibt es auch Kein solcher Wert im Array $arr2. Schlüssel oder Wert ist ungleich 3.

Methode 3: Verwenden Sie eine benutzerdefinierte Funktion

Die Verwendung einer benutzerdefinierten Funktion zum Vergleich verschiedener Elemente zweier Arrays ist eine vielseitige und anpassbare Methode.

Hier ist zum Beispiel eine Funktion, die verschiedene Elemente in zwei Arrays vergleicht:

function array_diff_custom($arr1, $arr2) {
    $diff = [];

    foreach ($arr1 as $key => $value) {
        if (!in_array($value, $arr2)) {
            $keyInArr2 = array_search($value, $arr2);
            if ($keyInArr2 !== false) {
                unset($arr2[$keyInArr2]);
            }
            $diff[$key] = $value;
        }
    }

    foreach ($arr2 as $key => $value) {
        $diff[$key] = $value;
    }

    return $diff;
}

Diese Funktion implementiert die folgende Funktionalität:

  • Durchlaufe alle Elemente in $arr1 und füge sie hinzu, wenn sie nicht in $arr2 sind $ diff-Array, andernfalls aus $arr2 entfernen.
  • Durchlaufen Sie alle Elemente in $arr2 und fügen Sie sie dem $diff-Array hinzu.

Zum Beispiel:

$arr1 = [1, 2, 3, 3, 3, 4, 5];
$arr2 = [3, 4, 5, 5, 5, 6, 7];

$diff = array_diff_custom($arr1, $arr2);

print_r($diff); // 输出 [0 => 1, 1 => 2, 2 => 3, 5 => 4, 6 => 5, 7 => 6, 8 => 7]

Da die benutzerdefinierte Funktion die Traversal-Methode verwendet, ist ihre Effizienz gering und es können Leistungsprobleme auftreten, wenn das Array groß ist.

Fazit

In diesem Artikel werden drei Methoden zum Vergleichen verschiedener Elemente eines Arrays in PHP vorgestellt: die Funktion array_diff, die Funktion array_diff_assoc und die benutzerdefinierte Funktion. Die Auswahl der geeigneten Methode hängt vom Anwendungsszenario und den spezifischen Anforderungen ab .

Das obige ist der detaillierte Inhalt vonSo vergleichen Sie verschiedene Elemente eines Arrays in PHP. 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