1

再帰関数を構築しようとしていますが、何らかの方法で関数がすべてのディレクトリを表示しません。何が欠けていますか? for または while を使用できることはわかっていますが、foreach ループが必要です。コードは次のとおりです。

$GLOBALS['testmodus']=0;
$o=new BrowseFolder();
$o->browse('../images/',1);
ta($o);
function ta($ausgabe) {
  echo('<p class="ta">'.__LINE__.$ausgabe.'</p>');
 }


class BrowseFolder{
    private $srcFolder;
    private $ifRecursiv=0;
    private $excludeFileTypes=array('.','..');
    private $filesFound;
    private $deleteFolderPath=0;
    private $makeFolderPath;

    public function browse($srcFolder,$ifRecursiv=0){
        ta($this->filesFound);
        $this->srcFolder=$srcFolder;
        $this->ifRecursiv=$ifRecursiv;
        $this->filesFound=scandir($this->srcFolder);
        $this->filesFound=$this->excludeArrayFromArray($this->filesFound,$this->excludeFileTypes);
        echo "<ul>";
        foreach($this->filesFound as $val){
                if(is_file($this->srcFolder.$val)){
                    echo "<li>";
                    echo "$val";
                    echo "</li>";
                    }elseif(is_dir($this->srcFolder.$val) && $this->ifRecursiv==1){
                        ta($this->srcFolder.$val);
                        echo "$val";
                        $this->browse($this->srcFolder.$val.'/',$this->ifRecursiv);

                      }
        }
        echo "</ul>";
    }

    private function excludeArrayFromArray($baseArray,$arrayToExclude){  //Exclude an array from another array,and arrange
        $newArray=array_values(array_diff($baseArray,$arrayToExclude));  
        return $newArray;

    }
}
4

1 に答える 1