Heim  >  Artikel  >  Backend-Entwicklung  >  So finden Sie effizient die Differenzmenge zweidimensionaler Arrays in PHP

So finden Sie effizient die Differenzmenge zweidimensionaler Arrays in PHP

PHPz
PHPzOriginal
2023-04-26 09:10:511085Durchsuche

Im PHP-Entwicklungsprozess müssen wir häufig einige Vorgänge an Arrays ausführen, z. B. Array-Zusammenführung, Deduplizierung, Schnittmenge, Vereinigung usw. Array-Differenz ist eine sehr wichtige Art von Array-Operation. Sie kann uns helfen, verschiedene Teile zweier Arrays effizient zu finden. In diesem Artikel stellen wir vor, wie Sie mithilfe der PHP-Sprache effizient die Differenzmenge zweidimensionaler Arrays ermitteln können.

  1. Was ist ein zweidimensionales Array?

Bevor wir lernen, wie man die Differenzmenge zweidimensionaler Arrays ermittelt, müssen wir zunächst verstehen, was ein zweidimensionales Array ist. Ein zweidimensionales Array bedeutet, dass jedes Element in einem Array ein Array ist, das heißt, ein Array enthält mehrere Arrays. Zweidimensionale Arrays sind in praktischen Anwendungen wie der Verarbeitung von Datentabellen, statistischen Daten usw. weit verbreitet. Daher müssen wir den Umgang mit zweidimensionalen Arrays beherrschen.

  1. Berechnen Sie die Differenz zwischen zwei Arrays

In PHP können wir die Funktion array_diff verwenden, um die Differenz zwischen zwei eindimensionalen Arrays zu berechnen, aber für zweidimensionale Arrays müssen wir einige andere Methoden verwenden, um sie zu lösen. Als nächstes stellen wir vor, wie die Differenzmenge zweier zweidimensionaler Arrays berechnet wird.

Angenommen, wir haben zwei zweidimensionale Arrays $firstArray und $secondArray. Wir müssen ihre Differenz berechnen und die Differenz in $resultArray speichern. Wir können den folgenden Code verwenden:

$resultArray = array();
foreach($firstArray as $firstItem){
    $flag = true;
    foreach($secondArray as $secondItem){
        if($firstItem == $secondItem){
            $flag = false;
            break;
        }
    }
    if($flag){
        $resultArray[] = $firstItem;
    }
}

Im obigen Code verwenden wir zwei foreach-Schleifen, um zwei zweidimensionale Arrays zu durchlaufen und ihre Elemente in $firstItem bzw. $secondItem zu speichern. Dann verwenden wir die Variable $flag, um zu markieren, ob die Bedingungen erfüllt sind. Wenn $firstItem bereits in $secondArray vorhanden ist, setzen Sie $flag auf false. Wenn schließlich $flag immer noch den Wert true hat, bedeutet das, dass $firstItem nicht in $secondArray existiert und wir es in $resultArray speichern müssen.

Obwohl die obige Methode machbar ist, ist sie relativ ineffizient, wenn wir mit großen zweidimensionalen Arrays arbeiten. Um die Leistung zu verbessern, können wir einige PHP-Funktionen verwenden, um den obigen Code zu vereinfachen.

  1. Verwenden Sie die Funktion array_udiff

PHP bietet eine Funktion array_udiff, mit der die Differenz zwischen zwei Arrays (oder mehreren Arrays) berechnet werden kann. Die Funktion dieser Funktion ist dieselbe wie die der obigen foreach-Schleife, sie ist jedoch effizienter als die foreach-Schleife. Wir können den folgenden Code verwenden, um die Differenz zwischen zwei zweidimensionalen Arrays zu berechnen:

function compareArray($a, $b) {
    return $a == $b ? 0 : 1;
}
$resultArray = array_udiff($firstArray, $secondArray, 'compareArray');

Im obigen Code haben wir eine Funktion „compareArray“ angepasst, um zu bestimmen, ob zwei Elemente gleich sind. Gibt 0 zurück, wenn gleich, andernfalls 1. Beim Aufruf der Funktion array_udiff übergeben wir zwei zweidimensionale Arrays $firstArray und $secondArray sowie die benutzerdefinierte Funktion CompareArray als Parameter. Die Funktion array_udiff vergleicht die Elemente in den beiden Arrays gemäß der Funktion CompareArray, entfernt dieselben Elemente und gibt schließlich die Differenz zwischen den beiden Arrays zurück.

  1. Verwenden Sie die Funktionen array_map und array_column

Zusätzlich zur Verwendung der Funktion array_udiff können wir auch die Funktionen array_map und array_column verwenden, um den Differenzsatz zweidimensionaler Arrays zu verarbeiten. Die Funktion array_map kann eine bestimmte Funktion auf jedes Element im Array anwenden und ein neues Array zurückgeben. Die Funktion array_column kann Spalten aus einem zweidimensionalen Array extrahieren und ein neues eindimensionales Array zurückgeben.

Jetzt kombinieren wir die beiden oben genannten Funktionen und verwenden den folgenden Code, um die Differenz zwischen zwei zweidimensionalen Arrays zu berechnen:

$diffArray = array_map(function($item) use($secondArray) {
    $existKey = array_search($item['id'], array_column($secondArray, 'id'));
    return $existKey === false ? $item : null;
}, $firstArray);
$resultArray = array_filter($diffArray);

Im obigen Code verwenden wir die Funktion array_map, um jedes Element in $firstArray auf a in einem anonymen Array anzuwenden Funktion. In der anonymen Funktion verwenden wir die Funktion array_search, um herauszufinden, ob das gleiche Element in $secondArray vorhanden ist. Gibt null zurück, falls vorhanden, andernfalls wird das Element zurückgegeben. Schließlich verwenden wir die Funktion array_filter, um Nullwerte zu löschen und schließlich die Differenz zwischen den beiden zweidimensionalen Arrays zu ermitteln.

  1. Zusammenfassung

Array-Differenz ist eine in der PHP-Entwicklung häufig verwendete Operation, die uns dabei helfen kann, verschiedene Teile in zwei zweidimensionalen Arrays effizient zu finden. In diesem Artikel haben wir drei Methoden zur Berechnung der Differenz zweidimensionaler Arrays vorgestellt: die Verwendung der foreach-Schleife, der Funktionen array_udiff, array_map und array_column. Im Vergleich zur foreach-Schleife sind die beiden letztgenannten Methoden effizienter und effizienter bei der Verarbeitung großer zweidimensionaler Arrays. Im eigentlichen Entwicklungsprozess sollten wir basierend auf der tatsächlichen Situation die am besten geeignete Methode auswählen.

Das obige ist der detaillierte Inhalt vonSo finden Sie effizient die Differenzmenge zweidimensionaler 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