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 回答