php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-01-2011, 10:23
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard While Schleife - Vergleichsoperator !==

Ich habe ein Verständisproblem bei dem !== Operator.
Definition von PHP.net
Zitat:
Gibt TRUE zurück, wenn $a nicht gleich $b ist, oder wenn beide nicht vom gleichen Typ sind
und folgender Code Ausschnitt:
PHP-Code:
 while (false !== ($file readdir($handle))) {
        echo 
"$file\n";
    } 
readdir gibt entweder einen boolschen Wert oder 0 oder 1 [...] zurück

Wenn nun von readdir eine 0 zurückgegeben würde, dann wäre diese doch vom Typ aber unterschiedlich von false und somit wäre die Bedingung true oder?
Das ist ja aber eigentlich nicht gewollt, was verstehe ich da falsch?
Mit Zitat antworten
  #2 (permalink)  
Alt 05-01-2011, 10:32
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Seit wann darf eine Datei oder Ordner nicht den Namen 0 haben?


Wozu überhaupt readdir ?
Es gibt schönere Methoden Verzeichnisse auszulesen.
__________________
Wir werden alle sterben

Geändert von combie (05-01-2011 um 10:37 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 05-01-2011, 12:02
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube, du hast meine Frage nicht ganz verstanden.
Nicht als Name 0 oder 1 sondern als Rückgabewert (0 = false, ...).
Hier das komplette Beispiel:
(unter
Beispiel #1 Alle Dateien eines Verzeichnisses auflisten)
PHP: readdir - Manual )
Schönere Methoden, OK, bin Anfänger und es geht ja auch mehr um das !==
Mit Zitat antworten
  #4 (permalink)  
Alt 05-01-2011, 12:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von einermeiner Beitrag anzeigen
readdir gibt entweder einen boolschen Wert oder 0 oder 1 [...] zurück
Nö.

"Returns the filename on success or FALSE on failure."

PHP: readdir - Manual
Mit Zitat antworten
  #5 (permalink)  
Alt 05-01-2011, 12:05
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

Etwas weiter unten auf der von dir verlinkten Seite:
Zitat:
This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.
Mit Zitat antworten
  #6 (permalink)  
Alt 05-01-2011, 12:08
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wenn eine Datei "0" heißt, gibt die Funktion natürlich 0 zurück. Aber was ist jetzt dein Problem?

Zitat:
readdir gibt entweder einen boolschen Wert oder 0 oder 1 [...] zurück
Diese Aussage ist jedenfalls falsch. Die Funktion kann "0" zurück geben, aber es kann auch jeder andere String sein.

Zitat:
ent|we|der [Konj.; nur in der Fügung] e. - oder (drückt aus, dass nur eine von zwei oder mehreren Möglichkeiten eintritt oder in Frage kommt);

Geändert von h3ll (05-01-2011 um 12:13 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 05-01-2011, 12:31
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

Im Zitat steht aber doch der Beleg dafür oder?

Problem:
PHP-Code:
while (false !== ($file readdir($handle))) {
        echo 
"$file\n";
    } 
angenommen es wird 0 (im Sinne von false ) zurückgegeben, so sollte das Skript eigentlich ja beendet werden, doch, da 0 ein anderer Datentyp ist wie false, so wird es dann trotzdem fortgesetzt.

Mit != funktioniert es hingegen, deshalb verstehe ich den Hinweis nicht, warum !== verwendet werden soll

Soll mir die Definition von entweder sagen, dass auf jeden Fall TRUE / FALSE zurückgegeben wird und 0,1,... optional sind?

Geändert von einermeiner (05-01-2011 um 12:33 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 05-01-2011, 12:39
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von einermeiner Beitrag anzeigen
angenommen es wird 0 (im Sinne von false ) zurückgegeben, so sollte das Skript eigentlich ja beendet werden
Wer sagt, dass 0 im Sinne von FALSE ist?
Mit Zitat antworten
  #9 (permalink)  
Alt 05-01-2011, 12:43
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
[...] als auch einen nicht-boolschen Wert, wie zum Beispiel 0 oder "", der von einem einfachen if-Statement als FALSE ausgewertet wird.
Oder?
Mit Zitat antworten
  #10 (permalink)  
Alt 05-01-2011, 12:55
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

Habe noch einmal darüber nachgedacht, wenn ihr mir folgende Frage beantwortet, habe ich es wahrscheinlich verstanden (dauert heute aber auch lange...):

Gibt readdir immer FALSE / TRUE wieder und 0 / 1 noch zusätzlich oder wird immer nur eines der beiden ausgegeben?
Mit Zitat antworten
  #11 (permalink)  
Alt 05-01-2011, 13:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Gibt readdir immer FALSE / TRUE wieder und 0 / 1 noch zusätzlich oder wird immer nur eines der beiden ausgegeben?
Unsinn!

PHP kennt nur wenige Datentypen!

Aber es kennt Boolean und Strings.

readdir() kann nur Boolean FALSE oder einen String liefern.

Damit ist klar, wenn man den Typesicheren Vergleich !== wählt, man nur auf FALSE testen muss, um zu erfahren, ob readdir() am "Ende" ist.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #12 (permalink)  
Alt 05-01-2011, 13:23
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von einermeiner Beitrag anzeigen
Gibt readdir immer FALSE / TRUE wieder und 0 / 1 noch zusätzlich oder wird immer nur eines der beiden ausgegeben?
Weder noch.

Die Funktion gibt FALSE oder einen String zurück. TRUE kommt niemals vor.
Mit Zitat antworten
  #13 (permalink)  
Alt 05-01-2011, 15:40
einermeiner
 Registrierter Benutzer
Links : Onlinestatus : einermeiner ist offline
Registriert seit: Jun 2009
Beiträge: 132
einermeiner befindet sich auf einem aufstrebenden Ast
Standard

OK, da gibt es dann noch ein Allgemeines Problem zu, deswegen konnte ich es nicht ganz verstehen, dazu habe ich aber ein separates Thema eröffnet.

Danke euch schonmal!

Allgmeine Frage zu while Schleife - Bedingung
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable aus foreach-Schleife außerhalb der Schleife nicht verwendbar Tiafe PHP Developer Forum 4 30-06-2009 16:42
Problem mit Vergleichsoperator Aragon4868 PHP Developer Forum 5 20-02-2009 15:54
vergleichsoperator ungleich devas PHP Developer Forum 13 17-01-2009 21:20
If-Schleife UND dazugehörige else-Schleife wird ausgeführt?? Tarik PHP Developer Forum 2 09-02-2008 02:21
Gibt es in PHP einen Vergleichsoperator ähnlich SQL % Davidoff PHP Developer Forum 4 06-08-2007 22:36

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:09 Uhr.