PHP wurde für die Verwendung mit Webanforderungen entwickelt (oder vielmehr weiterentwickelt), bei denen Sie häufig mit Zeichenfolgeneingaben (URL-Parametern oder POST-Anforderungen aus einem Formular in einem Browser) arbeiten. Daher werden Zeichenfolgen automatisch in andere Typen umgewandelt.
Ein einfaches Beispiel hierfür ist, dass '1' + '2'
es 3
keinen Fehler gibt, oder '12
', oder eine andere Interpretation. Nach der gleichen Logik kann die Zeichenfolge '0'
als Zahl verwendet werden 0
.
Unterdessen behandelt PHP wie viele andere Sprachen bestimmte Werte als "falsch", wenn sie in boolesche Werte umgewandelt werden - solche, die, wie Sie sagen, intuitiv "leer" sind. Dazu gehören numerische Zeichen 0
sowie die leere Zeichenfolge ''
und das leere Array []
. In einer if
Erklärung, wird der Ausdruck explizit auf boolean werfen, so if ( 0 )
ist das gleiche wie if ( false )
.
Wenn Sie diese beiden Dinge zusammenfassen, bekommen Sie ein Rätsel: Einerseits, wie Sie sagen, '0'
handelt es sich um eine nicht leere Zeichenfolge; Auf der anderen Seite haben wir gesagt, dass es als eine Zahl verwendet werden kann 0
, die "leer" ist. PHP entscheidet sich dafür, die "Null" als wichtiger als die '0'
"Stringiness" zu behandeln, so dass dies als "falsch" betrachtet wird.
Kurz gesagt '0' == 0 == false
:; oder(bool)'0' === (bool)(int)'0'