Fabian St.: Verständnisfrage

Beitrag lesen

Hi!

Im PHP-Handbuch findet sich bei den Beispielen zu readdir folgendes:

/* This is the correct way to loop over the directory. */
   while (false !== ($file = readdir($handle))) {
       echo "$file\n";
   }

/* This is the WRONG way to loop over the directory. */
   while ($file = readdir($handle)) {
       echo "$file\n";
   }

(s. http://de3.php.net/manual/en/function.readdir.php)

Wieso ist das erste Beispiel besser als das zweite ? Und gibt es einen Unterschied zwischen "!==" und "!=" ? Wenn ja, was bedeutet "!==" ?

Das erste Beispiel ist in sofern besser, als dass hier wirklich auf den Typ des Rückgabewertes von readdir() geachtet wird: Beim zweiten Beispiel würde die Schleife abbrechen, wenn es eine Datei mit dem Namen »0« geben würde, da hier dann der Ausdruck in den Klammern zu FALSE ausgewertet würde.
Im ersten Beispiel hingegen, findet zuerst die Zuweisung statt und dann wird mittels des Identitätsoperators überprüft, ob der Rückgabewert von readdir() wirklich FALSE ist und nicht etwas nur »0«.

Grüße,
Fabian St.