Heim > Backend-Entwicklung > PHP-Tutorial > Warum wird PHPs `0 == 'e'` als wahr ausgewertet?

Warum wird PHPs `0 == 'e'` als wahr ausgewertet?

Patricia Arquette
Freigeben: 2024-12-16 07:32:18
Original
679 Leute haben es durchsucht

Why Does PHP's `0 ==

PHPs überraschende String-Zahlen-Gleichheit: Erkundung der '0 == "e"'-Anomalie

In PHP kann ein scheinbar harmloser Vergleich helfen führen zu unerwarteten Ergebnissen, wie im folgenden Codeausschnitt deutlich wird:

$item['price'] = 0;
if ($item['price'] == 'e') {
    $item['price'] = -1;
}
Nach dem Login kopieren

Trotzdem Wenn man $item['price'] auf 0 initialisiert, wird die if-Bedingung unerklärlicherweise als wahr ausgewertet, wenn 'e' dem Preis zugewiesen wird, wobei 0 als Äquivalent zur Zeichenfolge 'e' behandelt wird.

Die Offenbarung : Typumwandlung und PHPs ==-Operator

Der Schuldige liegt im ==-Operator von PHP, der versucht, Operanden in denselben umzuwandeln Geben Sie ein, bevor Sie den Vergleich durchführen. In diesem Fall wird die Ganzzahl 0 in eine Zeichenfolge umgewandelt. Da „e“ keine gültige Ganzzahl ist, wird es zu 0, was zu einer falschen Übereinstimmung führt.

Die Lösung: Einen strengen Vergleich anwenden

Um solche Anomalien zu vermeiden, ist es Es empfiehlt sich, den ===-Operator anstelle von == zu verwenden. === führt einen strikten Vergleich durch, der keinen Typzwang beinhaltet, um sicherzustellen, dass nur Werte desselben Typs als gleich betrachtet werden.

Der bahnbrechende Shift von PHP 8

In einer deutlichen Abweichung von früheren Versionen führte PHP 8 ein geändertes Verhalten für String-Zahlen-Vergleiche ein. Anstatt Zahlen in Strings umzuwandeln, wandelt PHP 8 wann immer möglich Strings in Zahlen um. Diese Änderung entspricht den Erwartungen und stellt sicher, dass 0 und „e“ nicht mehr als gleich angesehen werden.

Zusammenfassung

Der ==-Operator von PHP kann beim Vergleich zu überraschenden Ergebnissen führen Zeichenfolgen und Zahlen aufgrund der Typumwandlung. Um unerwartetes Verhalten zu verhindern, ist es wichtig, den ===-Operator für strenge Vergleiche zu verwenden. Darüber hinaus verbessert der überarbeitete Ansatz von PHP 8 für String-Zahlen-Vergleiche die Konsistenz und Korrektheit des Codes.

Das obige ist der detaillierte Inhalt vonWarum wird PHPs `0 == 'e'` als wahr ausgewertet?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage