我希望我的脚本以递归方式进行scandir,
$files = scandir('/dir'); foreach($files as $file){ if(is_dir($file)){ echo '
我想循环这个方式,对于scandir找到的每个目录,它在该目录中找到的文件夹上运行另一个scandir,
所以dir'A'包含目录1/2/3,它现在应该scandir(1),scandir(2),scandir(3)等等,每个目录都找到了.
如何轻松地实现这一点,而无需在每个foreach中反复粘贴代码?
编辑:由于答案几乎与我已经尝试的一样,我会稍微更新一下这个问题.
使用此脚本,我需要创建一个树视图列表.使用当前发布的脚本,以下get的回声发生:
/images/dir1/file1.png /images/dir1/file2.png /images/dir1/file3.png /images/anotherfile.php /data/uploads/avatar.jpg /data/config.php index.php
我真正需要的是:
等等,谢谢你已经发布的答案!
我知道这是一个老问题,但我写了一个更实用的版本.它不使用全局状态并使用纯函数来解决问题:
function scanAllDir($dir) { $result = []; foreach(scandir($dir) as $filename) { if ($filename[0] === '.') continue; $filePath = $dir . '/' . $filename; if (is_dir($filePath)) { foreach (scanAllDir($filePath) as $childFilename) { $result[] = $filename . '/' . $childFilename; } } else { $result[] = $filename; } } return $result; }