我对PHP和编程相对较新,我正在尝试浏览目录并查找所有子目录,以及这些子目录的所有子目录,依此类推。我google了一下,偶然发现了递归的概念,我立即知道这是我需要的,因为从概念上我已经意识到它,但只是不知道它是否可能。由于我对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);
我查看了我能找到的资源,但似乎没有一个能给我我所需要的资源。非常感谢您阅读这篇文章,并希望能够伸出援助之手!
答案 0 :(得分: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);