In PHP kann der Vergleich einer Zeichenfolge mit einer Ganzzahl zu unerwarteten Ergebnissen führen. Insbesondere kann der Vergleich einer Zeichenfolge, die nur Ziffern enthält, mit der Ganzzahl 0 als wahr ausgewertet werden, auch wenn dies falsch erscheint.
Erklärung des Verhaltens
Wie im PHP angegeben Handbuch: Wenn eine Zeichenfolge in einem numerischen Kontext ausgewertet wird, wird sie basierend auf den darin enthaltenen Zeichen in eine Zahl umgewandelt. Wenn die Zeichenfolge einen Dezimalpunkt, einen Exponenten oder ein gültiges numerisches Format enthält, wird sie als Gleitkommazahl ausgewertet. Wenn sie jedoch nur Ziffern enthält, wird sie als Ganzzahl ausgewertet.
Im Fall der Zeichenfolge „d85d1d81b25614a3504a3d5601a9cb2e“ enthält sie nur Ziffern. Daher wird die Zeichenfolge beim Vergleich mit der Ganzzahl 0 zunächst in die Ganzzahl 0 konvertiert, was zu einem echten Vergleich führt.
Warum die zweite Zeichenfolge nicht funktioniert
Die zweite Zeichenfolge, „3581169b064f71be1630b321d3ca318f“, funktioniert nicht, da sie einen nicht numerischen Wert enthält Zeichen, „b.“ Wenn es in einem numerischen Kontext ausgewertet wird, wird es daher nicht als gültiges numerisches Format betrachtet. Stattdessen wird es als Zeichenfolge ausgewertet und der Vergleich mit der Ganzzahl 0 ergibt „falsch“.
Das obige ist der detaillierte Inhalt vonWarum gibt der Vergleich einer Zeichenfolge mit 0 in PHP manchmal „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!