我正在尝试使用以下函数来检索文件夹和子文件夹中的所有文件,不确定它为什么不返回任何结果。
function listDirectory($path){
$ret = array();
function listFolderFiles($dir){
global $ret;
if (is_dir($dir) !== true) {
return false;
}
$ffs = scandir($dir);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
foreach($ffs as $ff){
$ret[] = $ff;
if(is_dir($ff)) {
listFolderFiles($dir.'/'.$ff);
}
}
return $ret;
}
listFolderFiles($path);
return $ret;
}
答案 0 :(得分:0)
返回null
,因为代码的执行在此停止
if (count($ffs) < 1) {
return;
}
这主要是因为您可能放置给定的$path
值可能是空的[目录]含义,根本没有[文件]或[目录]。
如果给定的listDirectory
实际上是包含array
或$path
的目录,则您的方法file
将返回directory
。
如果需要,您可以在首先调用scandir
方法之前添加其他验证。
function listFolderFiles($dir) {
global $ret;
if (is_dir($dir) !== true) {
return false;
}
$ffs = scandir($dir);
// Rest of code
}
希望这有助于您的情况。
答案 1 :(得分:0)
非常感谢你的帮助,排序。
var_dump(listDirectory("../../../../wp-content/uploads/"));exit;
function listDirectory($path){
//var_dump($path);exit;
if(!file_exists ( $path)) {
var_dump("File doesn't exist");exit;
}
$ret = array();
function listFolderFiles($dir){
global $ret;
if (is_dir($dir) !== true) {
return false;
}
$ffs = scandir($dir);
unset($ffs[array_search('.', $ffs, true)]);
unset($ffs[array_search('..', $ffs, true)]);
foreach($ffs as $ff){
if(is_dir($dir.'/'.$ff)) {
listFolderFiles($dir.'/'.$ff);
} else {
$ret[] = $ff;
}
}
return $ret;
}
return listFolderFiles($path);
}