rekusion bricht ab
andi_b
- php
hallo,
leider funktioniert bei mir folgendes script nur deshalb nicht, weil php merkt, dass ich rekusiv aufrufe. kann man das umgehen?
//script:
$fileObject = & new FileFinder();
$fileArray = & $fileObject->getFiles($dir);
print_r($fileArray);
class FileFinder
{
var $returnArray;
var $root;
function FileFinder()
{
$this->returnArray = array();
}
function & getFiles($dir)
{
echo '# '.$dir."\r\n";
if(!$handle=opendir($dir))
{
die();
}
while (false !== ($file = readdir($handle))) {
if(is_file($file))
{
$this->returnArray[] = $file;
}
elseif (is_dir($file))
{
if(trim($file) != "." && trim($file) != "..")
{
$startDir = $dir.'\'.$file;
$this->returnArray[] = $this->getFiles($startDir);
}
}
}
closedir($handle);
return $this->returnArray;
}
}
//ausgabe:
C:\eigene\ableton-source\php2html>rename2html.php . hh hh
Array
(
[0] => Array
(
[0] => Array
*RECURSION*
)
[1] => create_html.bat
[2] => hallo das ist aber auch ein mist.php.html
[3] => rename2html.php
[4] => sidebar_sites.txt
)
danke, andi
hallo,
leider funktioniert bei mir folgendes script nur deshalb nicht, weil php merkt, dass ich rekusiv aufrufe. kann man das umgehen?//script:
$fileObject = & new FileFinder();
$fileArray = & $fileObject->getFiles($dir);print_r($fileArray);
class FileFinder
{
[...]
Ich weiss nicht, ob es Sinn macht, hier das Ergrebnis als Referenz zurückzugeben? Versuchmal ohne.
function & getFiles($dir)
{
[...]
return $this->returnArray;
}
}
»»[...]
hi,
Ich weiss nicht, ob es Sinn macht, hier das Ergrebnis als Referenz zurückzugeben? Versuchmal ohne.
sehr dick, das war schonmal der fehler. jetzt habe ich aber leider noch ein kleines problem. der erzeugt mir am anfang des arrays zwei sinnlose felder (sieht aus, als ob es mit '.', '..' zu tun hat, obwohl ich das ausgenommen habe).
herlichen dank, andi
class FileFinder
{
var $returnArray;
var $root;
function FileFinder()
{
$this->returnArray = array();
}
function getFiles($dir)
{
global $silent;
global $recursive;
global $directoryDelimiter;
if(!$silent)
{
echo $dir."\r\n";
}
if(!$handle=opendir($dir))
{
die();
}
while (false !== ($file = readdir($handle))) {
if(is_file($file) && !is_dir($file) && (trim($file) != "." && trim($file) != ".."))
{
$this->returnArray[] = $file;
echo '# '.$dir.$directoryDelimiter.$file."\r\n";
echo '## '.$file."\r\n";
}
elseif ($recursive === true && is_dir($dir.$directoryDelimiter.$file) && (trim($file) != "." && trim($file) != ".."))
{
$startDir = $dir.$directoryDelimiter.$file;
$this->returnArray[] = $this->getFiles($startDir);
}
}
closedir($handle);
return $this->returnArray;
}
}
// output:
# C:\eigene\ableton-source\php2html\create_html.bat
# C:\eigene\ableton-source\php2html\hallo das ist aber auch ein mist.php.html
# C:\eigene\ableton-source\php2html\rename2html.php
# C:\eigene\ableton-source\php2html\sidebar_sites.txt
Array
(
[0] => Array
(
)
[1] => Array
(
[0] => Array
(
)
)
[2] => create_html.bat
[3] => hallo das ist aber auch ein mist.php.html
[4] => rename2html.php
[5] => Array
(
[0] => Array
(
)
[1] => Array
(
[0] => Array
(
)
)
[2] => create_html.bat
[3] => hallo das ist aber auch ein mist.php.html
[4] => rename2html.php
)
[6] => sidebar_sites.txt
)
C:\eigene\ableton-source\php2html>
sorry, sinnloser stress, hab den fehler. der objekt-array hat sich selbst überschrieben....
andi