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 3keinen 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 0sowie die leere Zeichenfolge ''und das leere Array []. In einer ifErklä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'