Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt der Vergleich einer Zeichenfolge mit 0 in PHP manchmal „True' und manchmal „False' zurück?

Warum gibt der Vergleich einer Zeichenfolge mit 0 in PHP manchmal „True' und manchmal „False' zurück?

Patricia Arquette
Freigeben: 2024-12-07 16:23:12
Original
407 Leute haben es durchsucht

Why Does Comparing a String to 0 in PHP Sometimes Return True and Sometimes Return False?

Den seltsamen Vergleich von String mit Integer verstehen

Viele Programmierer sind verwirrt über das Verhalten des folgenden PHP-Codes:

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";
Nach dem Login kopieren

Überraschenderweise gibt dieser Code „Test 1 ist gleich!?“ aus. nur. Warum passiert das?

Lose Vergleiche und Konvertierung von Zeichenfolgen in Zahlen

Der Schlüssel zum Verständnis dieses Verhaltens liegt im losen Vergleichsmechanismus von PHP. Beim Vergleich einer Zeichenfolge mit einer Ganzzahl mithilfe des ==-Operators versucht PHP, die Zeichenfolge in eine Zahl umzuwandeln.

Laut PHP-Handbuch folgt die Zeichenfolgenkonvertierung in Zahlen diesen Regeln:

  • Wenn die Zeichenfolge einen Dezimalpunkt, einen Exponenten oder ein „e“-Zeichen enthält, wird sie als Gleitkommazahl interpretiert.
  • Andernfalls wird sie als eine interpretiert Ganzzahl.

Im Fall von $test1 wertet der Vergleich $test1 == 0 die Zeichenfolge $test1 als Ganzzahl aus, was zu 0 führt. Somit erfüllt er die Gleichheitsbedingung und gibt „ Test 1 ist gleich!?"

Ausnahme von der Regel

Allerdings Im Fall von $test2 schlägt die Ganzzahlkonvertierung fehl, da es ein ungültiges Zeichen, „b“, enthält. Infolgedessen konvertiert PHP $test2 im Integer-Kontext in 0, wodurch der Vergleich $test2 == 0 falsch wird.

Schlussfolgerung

Die offensichtliche Inkonsistenz beim Vergleich von Zeichenfolgen in ganze Zahlen lässt sich auflösen, indem man die losen Vergleichsregeln von PHP und seinen Mechanismus zur Konvertierung von Zeichenketten in Zahlen versteht. Beim Vergleich von Zeichenfolgen mit 0 bestimmen die Konvertierungsregeln, ob der Vergleich wahr oder falsch ist.

Das obige ist der detaillierte Inhalt vonWarum gibt der Vergleich einer Zeichenfolge mit 0 in PHP manchmal „True' und manchmal „False' zurück?. 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