Verständnisfrage
trinita
- php
0 Gerhard0 ichen1 lucien1 Fabian St.
Hallo zusammen !
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 "!==" ?
Danke für die Auskunft,
trinita
Meines Wissens nach bedeutet "!==" dasselbe wie "!=", bis auf den Unterschied dass dabei auch der Datentyp verglichen wird.
lg Gerhard
Moin trinita!
Vergleichs-Operatoren
tschüssi
ichen
Wieso ist das erste Beispiel besser als das zweite ? Und gibt es einen Unterschied zwischen "!==" und "!=" ? Wenn ja, was bedeutet "!==" ?
Wenn du mal auf http://www.php.net/manual/de/language.types.boolean.php nachschaust, wirst du sehen dass die Zeichenkette "0" auch als false interpretiert wird. Also bricht die zweite Schleife bei einer Datei mit dem Namen "0" schon ab. Dehalb wird im ersten Beispiel über das "===" explizit noch nach dem Typ des Rückgabewertes von readdir() geprüft (der eben dem Typ von "false" entsprechen muss - also Boolean).
Grüße,
lucien
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.