Heim  >  Artikel  >  Backend-Entwicklung  >  So löschen Sie Array-Schnittpunkte in PHP

So löschen Sie Array-Schnittpunkte in PHP

PHPz
PHPzOriginal
2023-04-18 14:07:04584Durchsuche

Das Löschen von Array-Schnittpunkten ist eine häufige Aufgabe in PHP. Schnittpunkt sind die Werte, die in zwei oder mehr Arrays gemeinsam sind. In einigen Fällen müssen wir möglicherweise Schnittpunkte aus einem oder mehreren Arrays entfernen, um eine bestimmte Operation oder einen bestimmten Vergleich an ihnen durchzuführen. In diesem Artikel werden verschiedene Methoden sowie deren Vor- und Nachteile vorgestellt, die Ihnen bei der Bewältigung dieser Aufgabe helfen sollen.

Methode 1: Verwenden Sie die Funktion array_diff.

PHP verfügt über eine integrierte Funktion namens array_diff, die Elemente in einem Array zurückgeben kann, die in einem anderen oder mehreren Arrays vorhanden sind. Mit dieser Funktion können wir die Schnittmenge zwischen zwei oder mehr Arrays entfernen.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

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

print_r($result); // [1, 2]

Im obigen Beispiel verwenden wir die Funktion array_diff, um die Elemente in $arr1 abzurufen, die in $arr2 nicht vorhanden sind. Dies bedeutet, dass die Kreuzung entfernt wurde.

Vorteile:

  • Einfach zu verwenden, es ist nur eine Codezeile erforderlich, um die Aufgabe abzuschließen.
  • Dies ist der schnellste Weg, wenn Sie nur den Schnittpunkt zwischen zwei Arrays entfernen müssen.

Nachteile:

  • Diese Methode ist möglicherweise nicht geeignet, wenn Sie Schnittpunkte aus drei oder mehr Arrays entfernen müssen. Sie müssen array_diff mehrmals aufrufen, und die Anzahl der beteiligten Arrays wirkt sich auf die Leistung aus.
  • Wenn Sie das ursprüngliche Array beibehalten müssen, ist zusätzliche Arbeit erforderlich, z. B. die Neuzuweisung des ersten Arrays zum zweiten Array.

Methode 2: Foreach-Schleife verwenden

Eine andere Methode ist die Verwendung einer foreach-Schleife. Die Idee dieser Methode besteht darin, das erste Array zu durchlaufen und zu prüfen, ob jedes seiner Elemente in anderen Arrays vorhanden ist. Falls vorhanden, wird das Element aus dem ersten Array entfernt.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

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

print_r($arr1); // [1, 2]

Im obigen Beispiel verwenden wir foreach, um $arr1 zu durchlaufen, und verwenden die Funktion in_array, um zu prüfen, ob das aktuelle Element in $arr2 vorhanden ist. Falls vorhanden, wird das Element mithilfe der unset-Funktion aus $arr1 entfernt.

Vorteile:

  • Kann Schnittpunkte aus mehreren Arrays löschen.
  • Wenn Sie das ursprüngliche Array beibehalten müssen, ist keine zusätzliche Arbeit erforderlich.

Nachteile:

  • Hat eine schlechte Leistung, insbesondere bei großen Arrays, da mehrere Schleifen und in_array-Funktionsaufrufe erforderlich sind.
  • Wenn Sie die Schlüssel der Elemente im ursprünglichen Array beibehalten müssen, ist mehr Arbeit erforderlich.

Methode 3: Verwenden Sie die Funktion array_filter.

Eine andere Methode ist die Verwendung der Funktion array_filter. Diese Funktion filtert Elemente in einem Array basierend auf einer Reihe von Regeln. Wir können eine Rückruffunktion definieren, die prüft, ob jedes Element im Array in anderen Arrays vorhanden ist. Falls vorhanden, wird das Element entfernt.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

$callback = function($value) use ($arr2) {
    return !in_array($value, $arr2);
};

$result = array_filter($arr1, $callback);

print_r($result); // [1, 2]

Im obigen Beispiel verwenden wir die Funktion array_filter und eine Rückruffunktion, um die Elemente in $arr1 abzurufen, die in $arr2 nicht vorhanden sind. Die Callback-Funktion verwendet eine use-Anweisung, um $arr2 an sie zu übergeben.

Vorteile:

  • Schnittpunkte können aus mehreren Arrays entfernt werden, da die Callback-Funktion mehrfach verwendet werden kann.
  • Wenn Sie das ursprüngliche Array beibehalten müssen, entsteht kein zusätzlicher Aufwand.

Nachteile:

  • Hat eine schlechte Leistung, da mehrere Callback-Funktionsaufrufe und in_array-Funktionsaufrufe erforderlich sind.

Zusammenfassend lässt sich sagen, dass die Verwendung der Funktion array_diff am schnellsten ist, wenn Sie nur die Schnittmenge zwischen zwei Arrays entfernen müssen. Wenn Sie Schnittmengen aus mehreren Arrays entfernen müssen, ist die Verwendung einer foreach-Schleife oder der array_filter-Funktion eine bessere Option. Wählen Sie je nach Bedarf die am besten geeignete Methode zur Erledigung der Aufgabe.

Das obige ist der detaillierte Inhalt vonSo löschen Sie Array-Schnittpunkte 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