is_dir() & is_file() arbeiten nicht so wie sie soll'n

Surma

Erfahrenes Mitglied
Hossa,
ich wollte gerade eine Function basteln, die mir ausgibt, ob ein Ordner noch UNterordner hat, oder nicht.

Ich habs wie filgt geschrieben:
PHP:
  function has_subdirs ($path)
  {
    $subdir = opendir ($path) ;
    if ($subdir != 0)
    {
      while (false != ($file = readdir ($subdir)))
      {
        if (($file != ".") && ($file != ".."))
        {
          if (!is_file ($file))
          {
            closedir ($subdir) ;
            return true ;
          }
        }
      }
    }
    return false ;
  }

Ich hab diese Zeile
if (!is_file ($file))
auch schon mit is_dir() geschrieben, aber es gibt probleme:

  • bei is_file()
    gibt die Funktion immer true zurueck, sobald sich irgend etwas im Ordner befindet
  • bei is_dir()
    gibt sie imemr false zurueck

HUH?! wo ist mein Denkfehler? Bin ich blind? Helft mir! (Lann das was mit Windoze zutun haben?)
 
Zuletzt bearbeitet:
Wie immer findet man die Loesung erst, wenn man etwas bereits gepostet hat...

is_dir() is_file() erwarten nicht eine Hande zu einem Ordner/Datei das z.B von readdir() erstell wurde,
sondern einfach nen ganzen Path.

also aus
if (!is_file ($file))
das machen:
if (!is_file ($path."/".$file))

Sorry!
 
bei is_file()
gibt die Funktion immer true zurueck, sobald sich irgend etwas im Ordner befindet
....deine Abfrage lautet doch
Code:
if (!is_file ($file)) 
          { 
            closedir ($subdir) ; 
            return true ; 
          }
...ist doch daher richtig...wenn du damit fragst, ob ein Verzeichnis keine Datei ist, gibst du true zurück....return true ; ....und das ist das Ergebnis, welches du erhältst.
 
Zurück