Heim > Backend-Entwicklung > PHP-Problem > So ermitteln Sie, ob zwei Arrays in PHP gleich sind

So ermitteln Sie, ob zwei Arrays in PHP gleich sind

PHPz
Freigeben: 2023-04-18 10:04:09
Original
1119 Leute haben es durchsucht

PHP ist eine weit verbreitete serverseitige Skriptsprache, die in vielen Bereichen wie dynamischen Websites, Webanwendungsentwicklung und Befehlszeilenschnittstellen verwendet werden kann. In der PHP-Entwicklung ist die Feststellung, ob Arrays gleich sind, ein häufiges Problem. In diesem Artikel erfahren Sie, wie Sie in PHP feststellen können, ob zwei Arrays gleich sind.

In PHP ist Array ein sehr wichtiger Datentyp, der zum Speichern einer Reihe von Werten oder einer Reihe von Schlüssel-Wert-Paaren verwendet wird. PHP kann Arrays auf verschiedene Arten erstellen. Die gebräuchlichsten Methoden sind die Verwendung von Array-Literalen oder die Verwendung der Funktion array(). Zum Beispiel:

$arr1 = [1, 2, 3];
$arr2 = array('a' => 1, 'b' => 2, 'c' => 3);
Nach dem Login kopieren

Um festzustellen, ob zwei Arrays gleich sind, ermitteln wir normalerweise, ob die darin enthaltenen Elemente und die Werte der Elemente gleich sind. PHP bietet eine Vielzahl von Methoden, um diesen Zweck zu erreichen. Deren Verwendung wird im Folgenden vorgestellt.

Methode 1: Verwenden Sie den ==-Operator

Der ==-Operator in PHP kann verwendet werden, um zu vergleichen, ob zwei Arrays gleich sind. Wenn zwei Arrays dieselben Elemente, aber in unterschiedlicher Reihenfolge enthalten, betrachtet der ==-Operator sie ebenfalls als gleich. Zum Beispiel:

$arr1 = [1, 2, 3];
$arr2 = [3, 2, 1];
if ($arr1 == $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}
Nach dem Login kopieren

Die Ausgabe des obigen Codes ist „die beiden Arrays sind gleich“, weil $arr1 und $arr2 die gleichen Elemente enthalten, also 1, 2, 3, aber ihre Reihenfolge ist anders.

Wenn das Array verschachtelte Arrays enthält, vergleicht der ==-Operator nur die Verweise auf die verschachtelten Arrays und nicht deren Werte. Zum Beispiel:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[1, 2], [3, 4]];
if ($arr1 == $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}
Nach dem Login kopieren

Das Ausgabeergebnis des obigen Codes lautet „Die beiden Arrays sind nicht gleich“, da $arr1 und $arr2 unterschiedliche verschachtelte Arrays enthalten, nämlich [1, 2], [3, 4 ] und [1, 2], [3, 4].

Methode 2: Verwenden Sie den ===-Operator

Im Gegensatz zum ==-Operator vergleicht der ===-Operator in PHP auch die Typen der beiden Arrays. Wenn zwei Arrays die gleichen Elemente und die gleichen Elementwerte haben und auch ihre Typen gleich sind, betrachtet der ===-Operator sie als gleich. Beispiel:

$arr1 = [1, 2, 3];
$arr2 = array(1, 2, 3);
if ($arr1 === $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}
Nach dem Login kopieren

Das Ausgabeergebnis des obigen Codes lautet „Die beiden Arrays sind nicht gleich“, da $arr1 und $arr2 zwar dieselben Elemente enthalten, aber von unterschiedlichem Typ sind Array-Literal. Und $arr2 ist ein Array, das mit der Funktion array() erstellt wurde.

Wenn das Array verschachtelte Arrays enthält, vergleicht der Operator === auch die Typen und Werte der verschachtelten Arrays. Beispiel:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[1, 2], [3, 4]];
if ($arr1 === $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}
Nach dem Login kopieren

Das Ausgabeergebnis des obigen Codes lautet „Die beiden Arrays sind nicht gleich“, und der Grund ist derselbe wie bei Methode eins.

Methode 3: Verwenden Sie die Funktion array_diff

Obwohl die obige Methode feststellen kann, ob zwei Arrays gleich sind, ist diese Methode aufgrund der Notwendigkeit, alle Elemente zu vergleichen, möglicherweise nicht möglich für große Arrays Relativ langsam oder zu viel Speicher beanspruchend. In diesem Fall können Sie die Array_diff-Funktion von PHP verwenden, um Arrays zu vergleichen. Mit dieser Funktion wird die Differenz zwischen zwei Arrays berechnet, also den Elementen, die in einem Array, aber nicht im anderen Array enthalten sind. Wenn die Differenz zwischen zwei Arrays leer ist, sind sie gleich. Beispiel:

$arr1 = [1, 2, 3];
$arr2 = [3, 2, 1];
if (empty(array_diff($arr1, $arr2)) && empty(array_diff($arr2, $arr1))) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}
Nach dem Login kopieren

Das Ausgabeergebnis des obigen Codes lautet „Zwei Arrays sind gleich“, der Grund ist der gleiche wie bei Methode eins.

Wenn das Array verschachtelte Arrays enthält, können Sie die Funktion array_diff rekursiv aufrufen. Zum Beispiel:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[3, 4], [1, 2]];
if (empty(array_diff($arr1, $arr2)) && empty(array_diff($arr2, $arr1))) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

function array_equal($arr1, $arr2) {
    if (count($arr1) != count($arr2)) {
        return false;
    }
    $d1 = array_diff($arr1, $arr2);
    $d2 = array_diff($arr2, $arr1);
    if (!empty($d1) || !empty($d2)) {
        return false;
    }
    foreach ($arr1 as $key => $value) {
        if (is_array($value) && is_array($arr2[$key])) {
            if (!array_equal($value, $arr2[$key])) {
                return false;
            }
        } else if ($value !== $arr2[$key]) {
            return false;
        }
    }
    return true;
}
Nach dem Login kopieren

Die Funktion array_equal im obigen Code kann zwei Arrays rekursiv vergleichen. Zur Verarbeitung verschachtelter Arrays ruft sie auch die Funktion array_diff auf, um die Differenzmengen zu vergleichen.

In diesem Artikel werden drei Methoden in PHP vorgestellt, um festzustellen, ob zwei Arrays gleich sind, nämlich die Verwendung des Operators ==, die Verwendung des Operators === und die Verwendung der Funktion array_diff. Wenn wir feststellen müssen, ob Arrays gleich sind, können wir je nach Situation eine dieser Methoden auswählen.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob zwei Arrays in PHP gleich sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage