php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.06.2004, 18:49  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard foreach problem

hi ich habe ein kleines problem mit meiner foreach schleife...
und zwar will ich rekursiv alle verzeichnisse auflisten,

Code:
class verzeichnisse {
	
	
	## durchsucht verzeichnisse und gibt einen array
	## gefüllt mit dem verzeichnisbaum zurück
	function list_dirs($dir) {
		# Falls der letzte "/" vergessen wurde, anhängen
		if (substr($dir,(strlen($dir)-1)) != "/") { $dir = $dir."/"; }

		$handle=opendir($dir); 
		while ($file = readdir ($handle)) { 
			# "." & ".." sowie versteckte dateien ausschließen
			# Nur Verzeichnisse werden gelistet
		   	if ($file != "." && $file != ".." && substr($file,0,1) != "." && is_dir($dir.$file)) {    	
				$list[] = $file;
		  	} 
		}
		closedir($handle);
		

		// Verzeichnisliste nach unterverzeichnissen abgrasen:
		foreach ($list as $key1 => $verzeichnis) {
		
		$liste = $this->unterverzeichnis($dir.$verzeichnis);
			if (is_array($liste)) {
				
				foreach ($liste as $key2 => $value) {
					$list[] = $verzeichnis."/".$value;
				}
				
			}

		}

		return $list;
	}
	
	
	## durchsucht verzeichnisse und gibt einen array
	## mit allen gefundenen unterverzeichnissen zurück
	function unterverzeichnis($dir) {
		if (substr($dir,(strlen($dir)-1)) != "/") { $dir = $dir."/"; }
		$handle=opendir($dir); 
		while ($file = readdir ($handle)) { 
		   	# Nur Verzeichnisse werden gelistet
		   	if ($file != "." && $file != ".." && substr($file,0,1) != "." && is_dir($dir.$file)) {    	
				$list[] = $file;
		  	} 
		}
		closedir($handle);
		
		# Falls unterverzeichnisse gefunden diese als array zurückgeben
		# falls nicht return = false
		if (is_array($list)) {
			return $list;
		} else {
			return false;
		}
	}
}

mein problem liegt jetzt darin das es nur eine ebene durchsucht...
(ich habe mal alles gepostet vielleicht liegt der fehler ja woanders)

ich glaube das problem liegt an der foreach-schleife
(die bei "Verzeichnisliste nach unterverzeichnissen abgrasen")

sie läuft solange bis $list zuende ist, und in der foreach-schleife wird ja nochwas an $list angehängt, also müsste sie ja auch diesen wert durchlaufen, sie geht aber nur solange wie der original $list-array ist und nicht wie der aktuelle (ich hoffe man versteht mich noch)

kann ich irgendwie die foreach dazu bringen nochmal $list einzulesen damit sie weiterläuft, und die neuen werte in $list auch durchlaufen werden...

ist nicht gerade der schönste code aber ich poste ja nicht umsonst im anfänger-forum...

danke für eure hilfe
gruß mAy
mAy^daY ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.06.2004, 19:08  
Gast
 
Beiträge: n/a
Standard Re: foreach problem

Zitat:
Zitat von mAy^daY
und zwar will ich rekursiv alle verzeichnisse auflisten,
mein problem liegt jetzt darin das es nur eine ebene durchsucht...
Guck Dir das Beispiel an (Quelltext wird mit angezeigt):
http://test.php-help.info/dirlist-1/
 
Alt 02.06.2004, 19:10  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

danke, ich habe schon mehrere funktionierende versionen,
aber warum funktioniert meine nicht, liegt es am foreach?

gruß mAy
mAy^daY ist offline  
Alt 02.06.2004, 20:29  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mAy^daY
aber warum funktioniert meine nicht, liegt es am foreach?
Für ein Debugging Deines Scriptes bin ich zu faul.
zu kleine Schrift, kein syntaxhighlighting

Wahrscheinlich machst Du einen Fehler bei der Rekusion (wenn das eine ist).
EDIT
nein, das ist keine Rekursion, was Du da veranstaltest.

is_dir() und is_file() erwarten korrekte Pfade. Sonst sagen die (berechtigt) FALSE
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
foreach verändert die werte des arrays das durchlaufen wird Crypi PHP Tipps 2007 5 10.01.2007 08:24
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
durch foreach auch normalen String durchlaufen lassen PHP Tipps 2006 7 14.01.2006 13:20
Problem mit Suchscript PHP Tipps 2007 5 28.12.2005 17:12
Mehrere Dateien uploaden (foreach Problem) pixelcut PHP-Fortgeschrittene 3 09.11.2005 17:34
$_FILES mit foreach() PHP Tipps 2005-2 5 20.10.2005 10:27
wird der array überschrieben? foreach problem c-bass PHP Tipps 2005-2 7 15.08.2005 13:19
PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
[Erledigt] for / foreach problem PHP-Fortgeschrittene 4 19.11.2004 16:58
foreach problem -> mit SQL abfrage PHP Tipps 2004 3 14.09.2004 10:10
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php foreach, foreach php, php if foreach, php foreach if, foreach problem, php if in foreach, php foreach funktioniert nicht, php foreach problem, php foreach sql, php for each file, foreach geht nicht, php foreach return, php foreach file, foreach funktioniert nicht, php readdir array foreach, foreach dir, php if und foreach, foreach file, readdir versteckte dateien#, php readdir versteckte dateien

Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.