Aktueller Standort: Startseite> Neueste Artikel> So implementieren Sie symmetrische Differenzsätze mit Array mit mehreren Array_Diff ()?

So implementieren Sie symmetrische Differenzsätze mit Array mit mehreren Array_Diff ()?

M66 2025-06-06

In der täglichen Entwicklung stoßen wir häufig auf Situationen, in denen wir zwei Arrays vergleichen und die verschiedenen Elemente zwischen ihnen herausfinden müssen. Wenn Sie zu diesem Zeitpunkt nur die Elemente finden, die in einem Array existieren, jedoch nicht in einem anderen Array, reicht die Funktion array_diff () aus. Aber wenn wir es herausfinden müssen, müssen wir Array_Diff () ein wenig kombinieren.

Was ist ein symmetrischer Unterschied?

Symmetrische Differenzsätze in Laien sind eine Sammlung nicht repetitiver Elemente in zwei Sätzen. Zum Beispiel:

 $array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];

Der symmetrische Differenzsatz dieser beiden Arrays beträgt [1, 2, 5, 6], da diese vier Zahlen in einem der Arrays existieren und in der anderen nicht existieren.

Implementiert mit PHP array_diff ()

array_diff () kann Werte finden, die im ersten Array vorhanden sind, aber nicht in anderen Arrays. Daher können wir zwei Array_Diff () verwenden, um den symmetrischen Differenzsatz zu erhalten:

 <?php
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];

// Finde es heraus array1 Es gibt array2 Nichts in
$diff1 = array_diff($array1, $array2);

// Finde es heraus array2 Es gibt array1 Nichts in
$diff2 = array_diff($array2, $array1);

// Führen Sie die Ergebnisse von zwei Differentialsätzen zusammen
$symmetricDifference = array_merge($diff1, $diff2);

print_r($symmetricDifference);
?>

Die Ausgabe wird sein:

 Array
(
    [0] => 1
    [1] => 2
    [4] => 5
    [5] => 6
)

Die Schlüssel hier sind möglicherweise nicht kontinuierlich. Wenn Sie wieder index müssen, können Sie einen Satz hinzufügen:

 $symmetricDifference = array_values($symmetricDifference);

Anwendung in tatsächlichen Projekten

Angenommen, Sie erstellen ein Mitgliedschaftssystem und müssen die Unterschiede in den Berechtigungen zwischen den beiden Benutzergruppen vergleichen. Auf diese Weise finden Sie verschiedene Berechtigungen:

 <?php
$userGroupA = ['read', 'write', 'delete'];
$userGroupB = ['read', 'export', 'import'];

$diff1 = array_diff($userGroupA, $userGroupB);
$diff2 = array_diff($userGroupB, $userGroupA);

$permissionDiff = array_merge($diff1, $diff2);
$permissionDiff = array_values($permissionDiff);

print_r($permissionDiff);

// Ergebnis:['write', 'delete', 'export', 'import']
?>

Tipp: Verwenden Sie Array_unique (), um weiter zu deduplicate

Obwohl wir zwei gegenseitig ausschließende Unterschiede im symmetrischen Differenzsatz verschmelzen, können auch doppelte Ergebnisse erzeugt werden, wenn doppelte Elemente im Array vorhanden sind. Sie können Array_unique () zur Deduplizierung hinzufügen:

 $symmetricDifference = array_unique(array_merge($diff1, $diff2));

Zusammenfassen

Durch die Kombination von zwei Array_Diff () -Funktionen können wir leicht den symmetrischen Differenzsatz von zwei Arrays erhalten. Diese Methode ist sowohl klar als auch prägnant und besonders für Berechtigungssysteme, Datenvergleich und andere Szenarien geeignet.

Sie können diese Methode in eine Funktion zusammenfassen, um die Wiederverwendbarkeit zu verbessern:

 function symmetric_diff(array $a, array $b): array {
    return array_values(array_unique(array_merge(
        array_diff($a, $b),
        array_diff($b, $a)
    )));
}

// Beispielanruf
$result = symmetric_diff([1, 2, 3], [2, 3, 4]);
print_r($result); // Ausgabe:[1, 4]

Ich hoffe, dieser Tipp kann Ihnen bei Ihrem PHP -Projekt helfen!