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

So ermitteln Sie in PHP, ob zwei Arrays gleich sind

PHPz
PHPzOriginal
2023-04-19 10:07:092560Durchsuche

In PHP ist es nicht sehr schwierig festzustellen, ob zwei Arrays gleich sind, aber Sie müssen auf einige Details achten. In diesem Artikel stellen wir verschiedene Möglichkeiten vor, den Inhalt zweier Arrays zu vergleichen, und untersuchen einige häufig auftretende Probleme und Lösungen.

Methode 1: Verwenden Sie den ==-Operator

In PHP können Sie den ==-Operator verwenden, um zu vergleichen, ob zwei Arrays gleich sind. Dieser Operator vergleicht alle Schlüssel und Werte zweier Arrays und gibt einen booleschen Wert zurück. Gibt true zurück, wenn die Schlüssel und Werte beider Arrays genau gleich sind, andernfalls false. Hier ist ein Beispiel:

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 1, 'b' => 2, 'c' => 4);

if ($array1 == $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are not equal

Im obigen Beispiel haben sowohl $array1 als auch $array2 die gleichen Schlüssel und Werte, außer $key3 => $value3. Daher sind sie nicht gleich.

Es ist zu beachten, dass die Vergleichsreihenfolge der ==-Operatoren keine Rolle spielt. Hier ist ein weiteres Beispiel, das zwei Schlüssel in unterschiedlicher Reihenfolge zeigt, deren Werte jedoch gleich sind:

$array1 = array('a' => 1, 'b' => 2);
$array2 = array('b' => 2, 'a' => 1);

if ($array1 == $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are equal

Methode 2: Verwenden Sie den ===-Operator

Eine andere Möglichkeit, zwei Arrays zu vergleichen, ist die Verwendung des ===-Operatorsymbols . Der Unterschied zur Verwendung des ==-Operators besteht darin, dass der ===-Operator vergleicht, ob die Datentypen, die den Schlüsselwerten der beiden Arrays entsprechen, gleich sind. Hier ist ein Beispiel:

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => '1', 'b' => '2', 'c' => '3');

if ($array1 === $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are not equal

In diesem Beispiel sind alle Werte von $array1 vom numerischen Typ, während alle Werte von $array2 vom Typ String sind. Daher sind sie nicht gleich.

Methode 3: Verwenden Sie die Funktion array_diff.

Eine andere Möglichkeit, zwei Arrays zu vergleichen, ist die Verwendung der Funktion array_diff(). Diese Funktion gibt Elemente im zweiten Array, die im ersten Array nicht vorhanden sind, als neues Array zurück. Wenn das zurückgegebene Array leer ist, sind die beiden Arrays gleich. Hier ist ein Beispiel:

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 1, 'b' => 2, 'c' => 3);

if (array_diff($array1, $array2) == array()) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are equal

In diesem Beispiel gibt die Funktion array_diff() ein leeres Array zurück, daher sind sie gleich.

Methode 4: Verwenden Sie die Serialisierungsfunktion

Die letzte Methode besteht darin, die Funktion serialize() zu verwenden. Diese Funktion serialisiert eine Variable in einen String, einschließlich Arrays. Daher können Sie feststellen, ob die beiden Arrays gleich sind, indem Sie ihre Zeichenfolgen nach der Serialisierung vergleichen:

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 1, 'b' => 2, 'c' => 3);

if (serialize($array1) === serialize($array2)) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are equal

Es ist zu beachten, dass bei Verwendung dieser Methode die Reihenfolge der Elemente in den beiden Arrays unterschiedlich ist, sie jedoch die Schlüssel und Werte haben ​​sind gleich, diese Methode beurteilt sie auch als ungleich.

Häufige Probleme und Lösungen

Manchmal können beim Vergleich zweier Arrays einige Probleme auftreten. Hier sind einige häufige Probleme und Lösungen:

Frage 1: Wie ignoriere ich die Reihenfolge der Schlüssel beim Vergleich zweier Arrays?

Es gibt Fälle, in denen die Reihenfolge der Schlüssel in zwei Arrays unterschiedlich sein kann, ihre Werte jedoch gleich sind. Zu diesem Zeitpunkt kann die Verwendung des ==-Operators zum Vergleich offensichtlich nicht das richtige Ergebnis liefern. Um dieses Problem zu lösen, können wir die Arrays vor dem Vergleich sortieren, sodass die Reihenfolge der Schlüssel ignoriert werden kann.

sort($array1);
sort($array2);

if ($array1 == $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

Oder verwenden Sie die Funktion ksort(), um nach Schlüssel zu sortieren:

ksort($array1);
ksort($array2);

if ($array1 == $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

Frage 2: Wie kann festgestellt werden, dass die Schlüssel und Werte zweier Arrays gleich sind, die Datentypen ihrer Schlüssel jedoch unterschiedlich sind?

Wenn Sie den ===-Operator zum Vergleichen zweier Arrays verwenden und ihre Schlüssel und Werte gleich, aber ihre Datentypen unterschiedlich sind, werden sie als ungleich beurteilt. Zum Beispiel:

$array1 = array('1' => 'a', '2' => 'b');
$array2 = array(1 => 'a', 2 => 'b');

if ($array1 === $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are not equal

Um sicherzustellen, dass die Schlüssel und Werte zweier Arrays gleich sind, auch wenn ihre Datentypen unterschiedlich sind, können wir die Funktion array_map() verwenden, um die Schlüssel in denselben Datentyp umzuwandeln dann vergleichen:

$array1 = array('1' => 'a', '2' => 'b');
$array2 = array(1 => 'a', 2 => 'b');

function convert_key($key) {
    return (int) $key;
}

$array1 = array_combine(array_map('convert_key', array_keys($array1)), $array1);
$array2 = array_combine(array_map('convert_key', array_keys($array2)), $array2);

if ($array1 === $array2) {
    echo 'Arrays are equal';
} else {
    echo 'Arrays are not equal';
}

// Output: Arrays are equal

Im obigen Code verwenden wir die Funktion array_map(), um die Schlüssel der beiden Arrays in Ganzzahltypen umzuwandeln, damit sie korrekt verglichen werden können.

Zusammenfassung

In PHP gibt es viele Möglichkeiten, um festzustellen, ob zwei Arrays gleich sind, z. B. die Verwendung des Operators ==, die Verwendung des Operators ===, die Verwendung der Funktion array_diff(), die Verwendung der Funktion serialize() usw . Es ist zu beachten, dass Sie bei der Verwendung dieser Methoden in bestimmten Situationen möglicherweise einige Techniken zur Lösung des Problems anwenden müssen, z. B. das Ignorieren der Reihenfolge der Schlüssel, die Verarbeitung des Datentyps der Schlüssel usw.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie in PHP, ob zwei Arrays gleich sind. 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