【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
<?php $dirname = "."; function fordir($dirname){ $dir = opendir($dirname); //第一次读. 第二次读.. //readdir($dir); //readdir($dir); while(($file = readdir($dir)) !== false ){ if($file == "." || $file == ".."){ continue; } $file = $dirname.'/'.$file; if(is_dir($file)){ echo "目录: {$file}<br>"; fordir($file); }else{ echo "文件: {$file}<br>"; } } closedir($dir); }fordir($dirname);
貌似进入了死循环,到底哪里出现了问题呢?
我猜想死循环是和.和.. 有关系的,但是……
求助!!!
用这个吧
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('./',FilesystemIterator::SKIP_DOTS));
foreach($iterator as $file){
echo $file.'<br />';
}
你写的$dirname在递归的时候没有加上子目录。
没有关系,是你目录太多层了吧
递归只到100
这个吧那就:
recurse('../');
function recurse($path){
$dir = opendir($path);
while($item = readdir($dir)){
if('.' == $item || '..' == $item) continue;
if(is_dir($path.'/'.$item)){
recurse($path.'/'.$item);
}else{
echo $item.'<br />';
}
}
}