while (false !== ($dirfile = readdir ($handle)))
m.E. kann man das Zweite = weglassen.
Nein, auf keinen Fall. PHP ist in der Lage, Variablen automatisch von einem Typ in einen anderen umzuwandeln, aus einem Text "123" kann also, wenn notwendig, die Zahl 123 werden. Das mag recht praktisch erscheinen, hat allerdings auch seine Tücken, wie in diesem Beispiel.
readdir() gibt entweder den Namen eines Verzeichniseintrags zurück oder aber den (boolschen) Wert false, sobald das Ende des Verzeichnisses erreicht ist. Der boolsche Wert false entspricht aber in PHP auch dem Text "", dem Text "0", der Zahl 0 und womöglich auch noch dem Text "false".
Mit dem "normalen" Vergleich != würde man über diese automatische Typenumwandlung stolpern, sobald beispielsweise ein Verzeichniseintrag namens "0" gelesen wurde: Der Vergleich != interpretiert den Text "0" als false, die Schleife bricht ab.
Die Operatoren !== und === nehmen hingegen zusätzlich zur Wertprüfung noch einen Vergleich des Typs vor, so daß der Vergleich oben wirklich nur auf das boolsche false anspricht und nicht auf irgendwelche gleichwertigen anderen Daten.
Und weil's so schön war: In der PHP-Anleitung ist genau dieser Sachverhalt in einem Satz erklärt.
Gruß,
soenk.e