Ankündigung

Einklappen
Keine Ankündigung bisher.

Rekursive Dateiliste

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rekursive Dateiliste

    Hallo,
    ich habe von einem bekannten diese Funktion schreiben lassen.Ich kapiere das auch alles.
    Nur eins verstehe ich ich nicht an folgender Funktion:
    Code:
    function dirlist($DIR = FALSE)
    {
    	if ( ! $DIR OR ! is_dir($DIR))
    		return;
    	if (substr($DIR,-1) != "/")
    		$DIR .= "/";
    	$r = array();
    	if ($d = dir($DIR))
    	{
    		while ($n = $d->read())
    		{
    			if ($n == "." OR $n == "..") continue;
    			if (is_file($DIR . $n))
    			{
    				if(substr($n, -3) == "jpg" || substr($n, -3) == "png" || substr($n, -3) == "gif")
    					$r[] = $DIR . $n;
    			}
    			if (is_dir($DIR . $n))	$r = array_merge($r, dirlist($DIR . $n));
    		}
    		$d->close();
    	}
    	return $r;
    }
    Warum steht im Funktionskopf $DIR=FALSE?
    So würde doch theoretisch jeder übergebene Wert wieder auf FALSE geändert, oder wie darf ich das verstehen?

    MfG
    Muecke

  • #2
    das bedeutet, falls kein wert für den parameter $dir mitgegeben wird, dann ist $dir = false

    Kommentar


    • #3
      danke.
      Hat mir gut geholfen. Jetzt werde ich mal sehen, ob ich jetzt im Fachgespräch in der Schuile ne 1 bekomme.

      MfG
      Muecke

      Kommentar


      • #4
        Re: Rekursive Dateiliste

        Zitat von Muecke
        ich habe von einem bekannten diese Funktion schreiben lassen.
        Es wäre mir neu, daß wir miteinander bekannt wären. Das einzig Neue an der Funktion ist die Reaktion auf vorgegebene Extensions. Hier eine Version, die auch bei großgeschriebenen Extensions noch funktioniert:
        Code:
        function dirlist($DIR = FALSE)
        {
          $ext = array ('jpg', 'png'); #, 'gif');
          if ( ! $DIR OR ! is_dir($DIR))
        	return;
          if (substr($DIR,-1) != "/")
        	$DIR .= "/";
          $r = array();
          if ($d = dir($DIR))
          {
             while ($n = $d->read())
             {
                  if ($n == "." OR $n == "..") continue;
                  if (is_file($DIR . $n) AND in_array(strtolower(array_pop(explode('.', $n))), $ext))
                        $r[] = $DIR . $n;
                  if (is_dir($DIR . $n))
        				$r = array_merge($r, dirlist($DIR . $n));
             }
             $d->close();
          }
          return $r;
        }
        Warum steht im Funktionskopf $DIR=FALSE?
        So würde doch theoretisch jeder übergebene Wert wieder auf FALSE geändert, oder wie darf ich das verstehen?
        Du darfst das so verstehen, daß $DIR dann false ist, wenn die Funktion ohne Parameter aufgerufen wird. Der Vorgabewert verhindert einen Parserfehler (... parameter count...'). Da die Funktion nur dann lauffähig ist, wenn $DIR != false und $DIR ein gültiges Verzeichnis ist, wird das in der 2. Zeile geprüft.

        Kommentar

        Lädt...
        X