Problem mit Funktion

kevkev

Erfahrenes Mitglied
Hallo,

ich hab mir eine funktion geschrieben, das rekursiv alle verzeichnise ab dem startverzeichnis durchgeht und dabei alle dateien die mit *.mp3 enden aufzulisten.

PHP:
		define(ROOT, $_GET["dir"]);

	function scan_dir($root){
		$dir = opendir($root);
		
		while($file=readdir($dir)){
			if ($file!="." AND $file!="..") {
				if (is_dir($root."/".$file)) {
					scan_dir($root."/".$file);
				} elseif (!is_dir($root."/".$file)) {
					$endung = strrchr ($file, ".");
					if ($endung==".mp3") { 
						$mp3s[] = $file;
					}
				}
			}
		} // while
		return isset($mp3s)?$mp3s:array("nixlos");
		closedir($handle);
	}
	
	$mp3 = scan_dir(ROOT);
	print_r($mp3);
...nur:
Es geht nicht.

Setzte ich an der stelle wo das array $mp3s gefüttert wird ein echo mit $file an, wird die datei ausgegeben, aber das array bleibt leer.

Weiß jemand warum das so ist?

gruß kevin
 
Wenn die Funktion ein Unterverzeichnis findet ruft sie sich selbst auf, aber der Rückgabewert wird nicht gespeichert:
Code:
  ...
   				if (is_dir($root."/".$file)) { 
  					scan_dir($root."/".$file); 
  				} elseif (!is_dir($root."/".$file)) { 
  ...
 
Hi,

@Gumbo:
Ja, hab ich auch schon gestestet, bin aber für meine funktion :D!

@aruba-x-x:
Ahh, ok, hab das mal abgeändert:
PHP:
	define(ROOT, $_GET["dir"]);

	function scan_dir($root){
		$dir = opendir($root);
		
		while($file=readdir($dir)){
			if ($file!="." AND $file!="..") {
				if (is_dir($root."/".$file)) {
					
					$mp3s[$file] = scan_dir($root."/".$file);
				} elseif (!is_dir($file)) {
					$endung = strrchr ($file, ".");
					if ($endung==".mp3") { 
						$mp3s[] = $file;
					}
				}
			}
		} // while
		return isset($mp3s)?$mp3s:array("nixlos");
		closedir($handle);
	}
	
	$mp3 = scan_dir(ROOT);
	print_r($mp3);

Jetzt bekomme ich aber den kompletten verzeichnis baum, wie bekomme ich denn jetzt nur die dateien?

Gruß kevin
 
Zuletzt bearbeitet:
Zurück