大家好我已经做了一个功能
function getDirContents($dir, &$results = array()){
$files = scandir($dir);
foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
$results[] = $path;
} else if(is_dir($path) && $value != "." && $value != "..") {
getDirContents($path, $results);
$results[] = $path;
}
}
return $results;
}
我正在调用它
$value = $this->getDirContents("/var/www/staging/public/files/rgerger");
从我的控制器的方式我可以得到文件夹的全部细节我的意思是目录和所有内容的子目录.. scandir只打开目标文件夹下的文件夹,该目标文件夹仅被扫描,但这并没有给我直到最后的子文件夹的内容。
答案 0 :(得分:0)
您需要将递归方法调用的结果分配给调用者。
我的(未经测试的)示例
function getDirectoryContents($dir)
{
$files = [];
if (is_dir($dir)) {
foreach(scandir($dir) as $key => $fileName) {
$filePath = realpath($dir . DIRECTORY_SEPARATOR . $fileName);
if ($fileName == '.' || $fileName == '..') {
continue;
}
if (is_dir($filePath)) {
$files[] = getDirectoryContents($filePath);
} else {
$files[] = $fileName;
}
}
}
return $files;
}
根据我的评论,您还可以使用SPL RecursiveDirectoryIterator
,它是PHP内置的OOP解决方案,用于迭代文件系统。