• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php遍历子文件

php 搞代码 3年前 (2022-01-23) 9次浏览 已收录 0个评论
文章目录[隐藏]
<?phpfunction list_dir($dirpath){     //判断路径最后一个字符是不是"\"    //如果不是 则在路径后加"\"     if($dirpath[strlen($dirpath)-1]!="\\"){$dirpath.="\\";}     static $result_array=array();  <mark>(本文来)源gaodaimacom搞#^代%!码&网(</mark><pre>搞gaodaima代码

//判断给定路径是否是一个目录 if(is_dir($dirpath)){ //打开目录句柄 $handle=opendir($dirpath); //从目录句柄中读取条目 //读取该目录下的所有文件及文件夹 while($file=readdir($handle)){ if($file==”.”||$file==”..”){continue;} //判断读取出来的是否是一个目录 if(is_dir($dirpath.$file)){ list_dir($dirpath.$file.”\\”); }else{ //将一个或多个单元压入数组的末尾 array_push($result_array,$dirpath.$file); } } closedir($handle); } return $result_array; } $path=”D:”;$array=list_dir($path); foreach($array as $value){ echo $value; echo “
“; }?>]

要是遍历d盘的时候,由于文件太多,会卡在哪里很久
有没有什么优化的方法

回复讨论(解决方案)

减少遍历的范围是唯一优化的方法
使用 glob 不递归或目录迭代器可使速度提高,但也有限

$p = './';$res = glob("$p/*");for($i=0; $i<count($res); $i++) {  if(is_dir($res[$i]))    foreach(glob("{$res[$i]}/*") as $f) $res[] = $f;}print_r($res);
$path = '.';$ite = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path) );$deep = 0;foreach ($ite as $cur) {  $fn = $cur->getBasename();  if($fn == '.' || $fn == '..') continue;  $res[] = $fn;  if(($d=$ite->getDepth()) == $deep);  echo "$d $fn <br>";}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php遍历子文件
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址