我正在编写一个脚本,该脚本将带有图像的项目列表进行匹配,该脚本存储在该主文件夹的文件夹和子文件夹中。我想获取主/子文件夹中的所有文件并将它们放在一个数组中。
我有一个函数可以查找所有文件,但不会将它们混合在一个数组中(因此我可以轻松地将项目与图像匹配 - 如果它是多维的则更难)。
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol>';
$images = [];
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'.$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo '</li>';
$images[] = $ff;
}
}
echo "<pre>";
print_r($images);
echo '</ol>';
}
listFolderFiles("K:\\");
关于如何平整结果阵列的任何想法?
答案 0 :(得分:0)
要返回数组而不是打印HTML,您显然会删除echo命令。
首先,在函数的开头定义数组,例如$ return = array();
现在,您使用$ return [] = $ ff;
而不是回显$ ff然后,您不想只是进行递归调用,而是希望使用array_merge将新数组合并到当前数组中($ return,listFolderFiles($ dir。'/'。$ ff));
最后,最后返回:return $ return;
答案 1 :(得分:0)
只需合并它们:
function listFolderFiles($dir) {
$files = glob("$dir/*");
foreach($files as $f) {
if(is_dir($f)) {
$files = array_merge($files, (array)listFolderFiles($f));
}
}
return $files;
}
foreach(listFolderFiles('/path') as $file) {
echo "<li>$file</li>";
}
编辑。很多方法,但是当你调用这个函数时可能会这样做。