Heim > Backend-Entwicklung > PHP-Tutorial > Warum erzeugt der PHP-Operator „==' beim Vergleich von 0 und Strings unerwartete Ergebnisse?

Warum erzeugt der PHP-Operator „==' beim Vergleich von 0 und Strings unerwartete Ergebnisse?

DDD
Freigeben: 2024-12-15 00:59:13
Original
923 Leute haben es durchsucht

Why Does PHP's `==` Operator Produce Unexpected Results When Comparing 0 and Strings?

PHPs überraschender Vergleich von 0 und Strings

PHPs Bewertung von 0 als gleich einem String ergibt sich aus dem Verhalten seines Vergleichsoperators. Wenn == zum Vergleich verwendet wird, konvertiert PHP die Datentypen, damit sie kompatibel sind. In diesem Fall wird 0 (eine Ganzzahl) in eine Zeichenfolge umgewandelt, sodass sie mit der Zeichenfolge „e“ verglichen werden kann.

Dieses Verhalten wird jedoch inkonsistent, wenn der Preis explizit auf 0 gesetzt wird. Die fehlerhafte Auswertung kann auf den subtilen Unterschied zwischen == und === zurückgeführt werden. == führt eine Typkonvertierung durch, während === auf strikte Gleichheit prüft, einschließlich des Datentyps.

Mit === wird sichergestellt, dass der Vergleich auf den tatsächlichen Datenwerten, einschließlich ihrer Typen, basiert. Im bereitgestellten Code wird durch das Ersetzen von == durch === 0 korrekt als ungleich „e“ ausgewertet, wenn der Preis auf 0 gesetzt ist.

Hinweise zu PHP-Versionsänderungen:

In PHP 8 hat sich das Vergleichsverhalten geändert. Beim Vergleich numerischer Zeichenfolgen mit Zahlen verwendet PHP jetzt einen numerischen Vergleich. Andernfalls wandelt PHP Zahlen in Zeichenfolgen um, bevor der Vergleich durchgeführt wird.

Beispielcode mit ===:

$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] === 'e') {
    $item['price'] = -1;
}
Nach dem Login kopieren

Mit dieser Korrektur bestimmt der Code genau, ob Der Preis soll 0 oder ein Austausch-„e“ sein, um eine ordnungsgemäße Handhabung der Artikelpreise sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum erzeugt der PHP-Operator „==' beim Vergleich von 0 und Strings unerwartete Ergebnisse?. 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