Ich wollte eine funktion schreiben, die alle php und html dateien aus ordnern und deren unterordnern ausliest.
Erster Ansatz. Grundordner wurde ausgelesen (noch keine funktion, einfach mal durchlaufen lassen).
Dann mach ich eine funktion daraus - um später die funktion rekursiv durchlaufen zu lassen - und plötzlich ackert er mir sämtliche unterordner durch und ich weiss nicht mal wieso! Hier kommt die funktion:
PHP-Code:
$files = array();
$ordner = array("");
$go=1;
$i=0;
function getfolders()
{
GLOBAL $files,$ordner;
foreach ($ordner as $dir)
{
$verz=opendir("../".$dir);
while ($file = readdir ($verz)) {
if (is_dir("../".$dir."/".$file) && $file!="." && $file!="..")
{
if ($dir) // unterverzeichnis
array_push($ordner,$dir."/".$file);
else
array_push($ordner,$file);
}
if (is_file("../".$dir."/".$file) && (ereg(".php",$file) || ereg(".htm",$file)))
{
if ($dir) // unterverzeichnis
array_push($files,$dir."/".$file);
else
array_push($files,$file);
}
}
closedir($verz);
}
}
getfolders();
foreach($files as $wert)
echo $wert."<br>";
Es funktionniert zwar alles schön und gut, nur möchte ich wissen WIESO es funktionniert =)
meine Vermutung ist, dass die globale Variable $ordner bei foreach() nach jedem durchlauf neu berechnet wird, was ohne globale Variable nicht der Fall wäre. kann das sein?