und
0=false
1=true
wären nicht war, da = eine Zuweisung, == und === aber Vergleiche wäre, wobei === der absoluten Gleichheit in allen Eigenschaften zugeordnet sei.
Ist letzteres der Grund für den zweiten Teil Ihrer Aussage?
Jup, in PHP gibt es (wie bei vielen anderen Skriptsprachen) im Gegensatz zu den meisten "richtigen" Programmiersprachen keine Typsicherheit für Variablen. Bei einer Prüfung mittels == (oder !=) wird implizit eine Typkonversion durchgeführt, um den Vergleich machen zu können. Für den Typ Integer sieht die Konversion zu boolean eben so aus, dass der Wert 0 in den Wert false umgewandelt wird, alle anderen Werte (zumindest für > 0, IMHO) werden in true umgewandelt. Für Strings beispielsweise entspricht ein leerer String dem bool-Wert false, alle anderen Strings dem Wert true.
Durch die Verwendung von === bzw. !== stellen Sie sicher, dass keine implizite Typkonvertierung durchgeführt wird, sondern zunächst sozusagen eine Prüfung stattfindet, ob die beiden verglichenen Variablen tatsächlich vom Typ boolean sind. Wenn ja, werden sie entsprechend nach den Regeln für bool-Werte miteinander verglichen, wenn nein, ist das Ergebnis der Operation in jedem Fall "false".
VG
J. Pietron