Variablen von außerhalb in einer Funktionen beschreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
auftreten
befehl
beitrag
beschrieb
daten
eintrag
funktion
global daten
inhalt
korrektheit
mache
seiteneffekt
sen
variable
variant
verzeichnis
-
OKay, der Titel ist ziemlich verwirrend. Also es geht darum das ich folgenden Code habe
function readContent($Anzahl,$verzeichnis) { $path[$Anzahl] = @opendir($verzeichnis); while (($eintrag = @readdir($path[$Anzahl])) !== false) { if($eintrag == ".." or $eintrag == ".") { } elseif(is_dir($verzeichnis."/".$eintrag)) { readContent(($Anzahl+1),$verzeichnis."/".$eintrag); } else { $Daten[$verzeichnis][] = $eintrag; } } closedir($path[$Anzahl]); } $Daten = array(); readContent(1,"."); print_r($Daten);
Nun ist $Daten au?erhalb der Funktion readContent und ich will das sie innerhalb der Funktion beschrieben wird. Wenn ich das so mache wie in meinem Code oben, dann wird sie zwar in der Funktion auch mit Inhalt gef?llt, sobald ich aber nachher wieder auf $Daten zugreife ist sie wieder nur "array()".
MIr return $Daten will ich das hier nicht, ich suche nach einem anderen Weg die Variable in der Funktion zu beschreiben und trotzdem nachher darauf zugreifen zu k?nnen. Geht das vllt mit global oder so etwas ?
Hoffe jmd kann helfen,
mfg mace -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dann sehe es so aus :
$Daten = array(); global $Daten; function readContent($Anzahl,$verzeichnis) { $path[$Anzahl] = @opendir($verzeichnis); while (($eintrag = @readdir($path[$Anzahl])) !== false) { if($eintrag == ".." or $eintrag == ".") { } elseif(is_dir($verzeichnis."/".$eintrag)) { readContent(($Anzahl+1),$verzeichnis."/".$eintrag); } else { $Daten[$verzeichnis][] = $eintrag; } } closedir($path[$Anzahl]); } readContent(1,"."); print_r($Daten);
UNd es geht weiterhin nicht. -
Hi,
du kannst das auf 2 Arten l?sen. Mit globalen Variablen $GLOBALS["VAR"]. Allerdings k?nnen bei zuvielen Globalen Variablen Seiteneffekte auftreten. Die bessere Alternative ist es einen R?ckgabewert in der Funktion zu benennen. RETURN $Var.
Ich schreib dir nochmal beide L?sungen auf (ohne Gew?hr auf Korrektheit)
1. L?sung mit globalen Variablen:
function readContent($Anzahl,$verzeichnis) { $path[$Anzahl] = @opendir($verzeichnis); while (($eintrag = @readdir($path[$Anzahl])) !== false) { if($eintrag == ".." or $eintrag == ".") { } elseif(is_dir($verzeichnis."/".$eintrag)) { readContent(($Anzahl+1),$verzeichnis."/".$eintrag); } else { $Daten[$verzeichnis][] = $eintrag; $GLOBALS["Daten"] = $Daten[$verzeichnis]; } } closedir($path[$Anzahl]); } $GLOBALS["Daten"] = array(); readContent(1,"."); print_r($GLOBALS["Daten"]);
Mit Return (besser!) s?he das ganze so aus:
function readContent($Anzahl,$verzeichnis) { $path[$Anzahl] = @opendir($verzeichnis); while (($eintrag = @readdir($path[$Anzahl])) !== false) { if($eintrag == ".." or $eintrag == ".") { } elseif(is_dir($verzeichnis."/".$eintrag)) { readContent(($Anzahl+1),$verzeichnis."/".$eintrag); } else { $Daten[$verzeichnis][] = $eintrag; Return $Daten[$verzeichnis]; } } closedir($path[$Anzahl]); } $Daten = array(); $Daten = readContent(1,"."); print_r($Daten);
So hoffe, das stimmt so.
mfg kingalex
Beitrag ge?ndert am 24.01.2006 19:30 von kingalex -
Danke, die GLOBALS Variante funktioniert.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage