In PHP sind Array_Diff () und Array_intersect () zwei sehr häufig vorkommende Array -Betriebsfunktionen, die eine wichtige Rolle bei der Berechnung des Array -Vergleichs und der Differenz -Berechnung spielen. Die Funktionen dieser beiden Funktionen sind unterschiedlich, aber manchmal können sie in Kombination verwendet werden, um die Effizienz des Codes zu verbessern. Dieser Artikel erläutert ihre Detailunterschiede und gibt eine Möglichkeit, sie in Kombination zu verwenden.
Array_Diff () wird verwendet, um ein Array mit Elementen zurückzugeben, die im ersten Array vorhanden sind, aber nicht in den anderen Arrays enthalten sind. Einfach ausgedrückt, Array_Diff () berechnet die "Differenz -Set" des Arrays.
array_diff(array $array1, array $array2, array ...$arrays): array
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$result = array_diff($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[0] => 1
[1] => 2
)
Im obigen Beispiel gibt Array_Diff () Elemente in Array1 zurück, jedoch nicht in Array2 , d. H. 1 und 2.
Array_intersect () wird verwendet, um ein Array zurückzugeben, das alle Elemente enthält, die in zwei oder mehr Arrays existieren. Es berechnet die "Schnittpunkt" des Arrays.
array_intersect(array $array1, array $array2, array ...$arrays): array
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$result = array_intersect($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[2] => 3
[3] => 4
)
Im obigen Beispiel gibt Array_intersect () Elemente zurück, die sowohl in Array1 als auch in Array2 existieren, nämlich 3 und 4.
Fassen wir die Unterschiede zwischen diesen beiden Funktionen zusammen:
Array_diff () : Gibt ein Array mit Elementen zurück, die sich im ersten Array, nicht jedoch in den anderen Arrays befinden. Mit anderen Worten, es berechnet den "Differenzsatz".
Array_intersect () : Gibt ein Array zurück, das alle Elemente enthält, die in zwei oder mehr Arrays existieren. Es berechnet "Kreuzung".
Aus dem Ergebnis schließt das von Array_Diff () zurückgegebene Element andere Arrays aus, während Array_intersect () ein gemeinsames Element zurückgibt.
Manchmal müssen wir gleichzeitig den Unterschied und die Schnittstelle bei der Verarbeitung komplexer Arrays erhalten. Zu diesem Zeitpunkt sollten Sie Array_Diff () und Array_intersect () in Kombination verwenden, um die Effizienz zu verbessern. Wenn wir beispielsweise bestimmte unerwünschte Elemente ausschließen und auch gemeinsame Elemente in Kreuzungen finden müssen, können diese beiden Funktionen in einem Schritt kombiniert werden.
Angenommen, wir haben zwei Arrays, eine ist die Interessenliste von Benutzer A und die andere ist die Interessenliste von Benutzer B. Wir müssen die Interessen herausfinden, die A hat, aber B nicht (Differenzsatz) und die Interessen, die A und B teilen, herausfinden, dass A und B teilen (Kreuzungssatz).
$userA = ['music', 'sports', 'travel', 'reading'];
$userB = ['sports', 'travel', 'photography'];
// ErhaltenAHabenBKein Interesse
$diff = array_diff($userA, $userB);
print_r($diff); // Ausgabe: Array ( [0] => music [3] => reading )
// ErhaltenAUndBGemeinsame Interessen
$intersect = array_intersect($userA, $userB);
print_r($intersect); // Ausgabe: Array ( [1] => sports [2] => travel )
Dieser Ansatz hilft uns effektiv, die verschiedenen Teile von zwei Arrays mit denselben Teilen zu trennen und zu vergleichen, was die Komplexität verringert.
Manchmal müssen wir die URL -Liste verarbeiten und entsprechende Urteile fällen. array_diff () und array_intersect () können auch in dieser Art von Anwendungsszenario verwendet werden. Nehmen wir beispielsweise an, wir müssen herausfinden, dass einige URLs nicht unter dem angegebenen Domänennamen stehen, oder die Schnittpunkt in der Liste von zwei Domain -Namen herausfinden.
$urlsA = ['http://example.com', 'http://m66.net/page1', 'http://m66.net/page2'];
$urlsB = ['http://m66.net/page1', 'http://m66.net/page2', 'http://example.com/page3'];
// Erhalten在AIn aber nichtBInternURL
$diffUrls = array_diff($urlsA, $urlsB);
print_r($diffUrls); // Ausgabe: Array ( [0] => http://example.com )
// ErhaltenAUndBGemeinsamURL
$intersectUrls = array_intersect($urlsA, $urlsB);
print_r($intersectUrls); // Ausgabe: Array ( [1] => http://m66.net/page1 [2] => http://m66.net/page2 )
Array_Diff () und Array_intersect () sind bei der Verarbeitung von Arrays sehr nützliche Funktionen und werden verwendet, um den Differenz und die Schnittstelle zu berechnen.
Durch die Verwendung dieser beiden Funktionen in Kombination können wir Array -Daten effizienter verarbeiten, insbesondere wenn wir gleichzeitig unterschiedliche Teile und die gleichen Teile benötigen.
In der tatsächlichen Entwicklung, insbesondere im Umgang mit URLs, Benutzerdaten usw., kann die rationale Verwendung dieser beiden Funktionen die Lesbarkeit und Ausführungseffizienz des Codes verbessern.