0

私はPHPとプログラミング全般に比較的慣れていないので、ディレクトリを参照して、すべてのサブディレクトリ、およびそれらのサブディレクトリのすべてのサブディレクトリなどを見つけようとしています。少しググって、再帰の概念に出くわしました。概念的にはすでにそれを認識していましたが、それが可能かどうかわからなかったため、必要なものであることがすぐにわかりました。PHP言語の構造(およびそのことに関する一般的なプログラミング構造)についての私の限られた理解で、私はここで少し壁にぶつかっています。言語に組み込まれているイテレータについて何かを見ましたが、何が起こっているのかを理解し、自分で組み立てることができるようにしたいと思います。

私が知る限り、ルートフォルダー内のディレクトリが事前に入力されている配列を(以前のglob関数を使用して)取得し、それらのそれぞれを調べて、新しいディレクトリが見つからなくなるまで深く掘り下げていきます...しかし、それはここで起こっていることではないようです。'[]'演算子は文字列ではサポートされていないというエラーが表示されますが、私が知る限り、'$ arrayName[$key]'は文字列ではなく配列オブジェクトです。その特定の問題が解決されたとしても、専門家はこれがうまくいくかどうか、そうでない場合は何をする必要があるかを教えてもらえますか?

$directory_list[0] = "directory1";
$directory_list[1] = "directory2";
$directory_list[2] = "directory3";

function iterate_unknown_directories($arrayName) {
    foreach ($arrayName as $key => $arrayObject) {
        $directories_check = glob($arrayObject."/*",GLOB_ONLYDIR);
        foreach ($directories_check as $directory) {
            if ($directory !== getcwd()) {
                if ($directory !== $arrayObject) {
                    $arrayName[$key][] = $directory;
                }
            }
        }
        if (is_array($arrayName[$key])) {
            iterate_unknown_directories($arrayName[$key]);
        }
        echo $arrayObject;
    }
}

iterate_unknown_directories($directory_list);

見つけたリソースを調べましたが、どれも私が必要としているものを正確に提供してくれなかったようです。ここまで読んでくれてありがとう、そしてうまくいけば手を貸してくれてありがとう!

4

1 に答える 1

0

私はあなたが問題を複雑にしすぎているとかなり確信しています。これを見てみてください:

function iterate_unknown_directories($dirs)
{
    foreach ($dirs as $dir)
    {
        $subDirs = glob($dir . "/*", GLOB_ONLYDIR);

        /* print out all the new directories*/
        foreach ($subDirs as $subDir)
            echo $subDir . "<br>";

        // recursively search the new directories
        iterate_unknown_directories($subDirs);
    }
}

$directories = array(
    'test_dir'
);

iterate_unknown_directories($directories);
于 2013-01-30T05:26:00.363 に答える