Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt der Vergleich einer Zeichenfolge mit 0 in PHP manchmal „True' und manchmal „False' zurück?
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!?";
Ü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:
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!