我正在尝试创建一个递归函数来使用scandir()显示目录树。
我试过下面的代码,但是它一直在发送
警告: foreach()参数必须是类型为数组\对象的
我做错了什么?
$dir = scandir('.');
function scan($location) {
foreach($location as $path) {
if (is_dir($path)) {
scan($path);
}
else {
echo $path.'<br>';
}
}
}
scan($dir);发布于 2022-02-24 20:24:04
在第一个调用中,发送scandir()的结果,这是一个数组(或false)。然后,在递归调用中,发送一个字符串。
然后,您需要注意scandir()的结果。它返回.和..:当前目录和父目录。
函数中包含scandir()的代码:
function scan($location)
{
$dirs = scandir($location);
foreach($dirs as $path) {
if ($path == '.' || $path == '..') continue;
if (is_dir($path)) {
scan($path);
}
else {
echo $path.'<br>'; //
}
}
}
scan('.');此外,您还可以查看DirectoryIterator类和FilesystemIterator类。
发布于 2022-02-24 20:22:32
scandir也返回. (此dir)和.. (父dir)。你应该无视他们。
if ($path != '.' && $path != '..' && is_dir($path)){
scan(scandir($path));
}https://stackoverflow.com/questions/71257610
复制相似问题