Vor kurzem bin ich auf einige Probleme bei der Durchführung von Vergleichsvorgängen gestoßen. Normalerweise ignoriere ich die Details, aber ich habe nicht damit gerechnet, dass das Problem dieses Mal auftritt.
Der Vergleichsoperator == in PHP bedeutet: Wenn die Werte der beiden Daten gleich sind, geben Sie true zurück, andernfalls geben Sie false zurück. Beachten Sie, dass hier gesagt wird, dass das Ergebnis wahr ist, wenn die Werte gleich sind. Das heißt, die Wertetypen werden hier nicht verglichen. Zum Beispiel: 12 == '12' Das Ergebnis ist wahr.
Aufgrund des schwachen Typs von PHP-Variablen wird der Typ der Variablen oft nicht bewusst berücksichtigt, und das Problem wird dieses Mal durch den Variablentyp verursacht.
Mein Problem tritt auf, wenn ich die Funktion array_search verwende.
array_search wird zum Durchsuchen von Daten mit einem bestimmten Wert verwendet. Wenn der Wert vorhanden ist, wird der dem Wert entsprechende Index zurückgegeben. Tritt dieser Wert mehrmals auf, wird der erste abgerufene Index zurückgegeben. Wenn der Wert nicht existiert, geben Sie „false“ zurück.
Mein Problem tritt in einer Umgebung auf, die der folgenden ähnelt:
<?php$testA = array( 'a' => '123', 'b' => 'iphp8.com', 'c' => '014778', 'd' => '14778', ); echo array_search('14778', $testA);
Das zu diesem Zeitpunkt erhaltene Ergebnis ist c.
Denn standardmäßig vergleicht array_search die Wertetypen nicht, d. h. es führt einen ==-Vergleich durch. Wenn es um reine Zahlen geht, scheinen gerade Zeichenfolgen zum Vergleich in Zahlen umgewandelt zu werden. Daher spielt es keine Rolle, wie viele führende Nullen vorhanden sind. „14778“ und „014778“ sind gleich, daher ist im obigen Beispiel das zurückgegebene The Das Ergebnis ist c, nicht d, wie wir dachten.
Um das gewünschte Ergebnis zu erhalten, müssen wir zu diesem Zeitpunkt einen ===-Vergleich durchführen, der den Vergleich sowohl von Werten als auch von Typen erfordert.
Für array_search können wir einen kongruenten Vergleich durchführen, indem wir dem dritten Parameter einen wahren Wert zuweisen.
Das Obige ist der Inhalt von Hinweis 010. Hinweise zum ==-Vergleichsoperator in PHP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com).