目次
PHPのサブファイルのトラバース
Jun 20, 2016 pm 12:57 PM<?phpfunction list_dir($dirpath){ //判断路径最后一个字符是不是"\" //如果不是 则在路径后加"\" if($dirpath[strlen($dirpath)-1]!="\\"){$dirpath.="\\";} static $result_array=array(); //判断给定路径是否是一个目录 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 "<br>"; }?>
ログイン後にコピー
要是遍历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>";}
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7287
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



LaravelのバックエンドでReactアプリを構築する:パート2、React
