Heim  >  Artikel  >  Backend-Entwicklung  >  So löschen Sie den Schnittpunkt zweier Arrays in PHP

So löschen Sie den Schnittpunkt zweier Arrays in PHP

PHPz
PHPzOriginal
2023-04-19 11:35:55605Durchsuche

Bei der PHP-Programmierung tritt häufig das Problem auf, die Schnittmenge zweier Arrays zu löschen, insbesondere wenn die Schnittmenge mehrerer Arrays verarbeitet werden muss. In diesem Artikel erfahren Sie eine einfache und praktische Methode zum Löschen der Schnittmenge zwischen zwei Arrays.

1. Problembeschreibung

Angenommen, es gibt zwei Arrays $A bzw. $B:

$A = array(1,2,3,4,5,6);

$B = array(4 , 5,7,8,9,10);

Die Anforderung besteht darin, nur alle Elemente von $A und $B beizubehalten, jedoch nicht die Schnittmenge der beiden Arrays einzuschließen, d. h. das Ergebnisarray sollte sein:

$ Ergebnis = array( 1,2,3,6,7,8,9,10);

Wie erreicht man das? Im Folgenden werden Sie einzeln vorgestellt.

2. Methode 1

Zuerst können wir die Funktion array_diff in PHP verwenden, um die Differenzoperation von Array-Elementen zu implementieren:

$Result = array_merge(array_diff($A, $B), array_diff ($B , $A));

Im obigen Code bedeutet array_diff($A, $B), Elemente herauszufiltern, die sich im Array $A, aber nicht im Array $B befinden; array_diff($B, $ A) bedeutet, Elemente im Array $B, aber nicht im Array $A herauszufiltern. Verwenden Sie dann die Funktion array_merge, um die beiden Ergebnisarrays zu kombinieren. Diese Methode scheint einfach zu sein, ist aber in Wirklichkeit nicht robust, wie die folgenden Punkte zeigen:

  1. kann die Situation nicht bewältigen, in der das Array mehrere identische Elemente enthält. Denn beim Zusammenführen zweier Arrays wurden tatsächlich dieselben Elemente zusammengeführt, sodass Duplikate nicht entfernt werden können.
  2. Inkonsistente Elementtypen können nicht verarbeitet werden. Beispielsweise gibt es in $A ein Element vom Typ „Hallo“, aber nicht in $B. Wir hoffen jedoch, dass das endgültige Ausgabearray „Ergebnis“ die Vereinigung aller Elemente ist. Dann wird bei Verwendung der Funktion „array_merge“ ein Fehler gemeldet.

Um diese Probleme besser zu vermeiden, müssen wir eine robustere Methode verwenden, um die Schnittmenge von Array-Elementen zu löschen.

3. Methode 2

Als nächstes können wir jedes Element im Array durchlaufen und dabei Deduplizierungs- und Filtervorgänge durchführen. Der Code lautet wie folgt:

$Result = array();

foreach($A as $value){

if(!in_array($value, $B)){
    $Result[] = $value;
}

}

foreach($B as $value){

if(!in_array($value, $Result)){
    $Result[] = $value;
}

}

Oben Code: Wir definieren zunächst ein leeres Array $Result, das das endgültige Ergebnisarray darstellt. Verwenden Sie dann zwei foreach-Schleifen, um jedes Element in $A und $B zu durchlaufen. Verwenden Sie während des Vorgangs die Funktion in_array, um zu bestimmen, ob das aktuelle Element in einem anderen Array erscheint, beispielsweise ob es in $B erscheint. Wenn es vorher nicht erscheint, wird es zu $Result hinzugefügt. Das letzte $Result-Array ist die Vereinigung aller Elemente in den beiden Arrays.

Die Verwendung dieser Methode hat die folgenden Vorteile:

  1. kann die Situation bewältigen, in der das Array mehrere identische Elemente enthält, da Elemente nacheinander zum neuen Array hinzugefügt werden.
  2. Kann mit inkonsistenten Elementtypen umgehen, da die Werte der Elemente einzeln über die Funktion in_array verglichen werden.
  3. Wenn die Arraygröße klein ist, ist die Effizienz höher.

4. Zusammenfassung

In PHP werden in diesem Artikel zwei Möglichkeiten zum Umgang mit Array-Schnittpunktproblemen vorgestellt: die Verwendung der array_diff-Funktion und die Schleifendurchlauffilterung. Obwohl beide Methoden korrekte Ergebnisse liefern können, ist die Methode der Schleifendurchquerung robuster und kann mehr Randfälle verarbeiten, was es wert ist, erlernt zu werden.

Das obige ist der detaillierte Inhalt vonSo löschen Sie den Schnittpunkt zweier 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