為大家分享的第一個(gè)操作內(nèi)容: 遍歷并打印指定目錄下所有文件
- <?php
- //功能:遍歷并打印指定目錄下所有文件
- function scan_dir($dir_name,$dir_flag=1) {
- static $FILE_COUNT=1; //記錄文件數(shù)目 初值為1 目錄名稱不記
- $FILE_COUNT--; //每調(diào)用一次scan_dir()函數(shù)自減1
- @$dir_handle=opendir($dir_name); //抑制錯(cuò)誤信息顯示 便于自定義錯(cuò)誤顯示
- if(!$dir_handle)
- die("目錄打開錯(cuò)誤!");
- while(false!==($filename=readdir($dir_handle))) //文件名為‘0'時(shí),readdir返回 FALSE,判斷返回值是否不全等
- {
- $flag=$dir_flag; //古怪的 is_dir($filename) ! $filename這個(gè)路徑必須能夠?qū)さ剑‘?dāng)$filename不存在或者不是目錄時(shí)返回false
- if($filename!='.'&&$filename!='..')
- {
- $FILE_COUNT++; //不記錄當(dāng)前路徑和上一級(jí)路徑
- while($flag>0&&--$flag) //負(fù)數(shù)仍為真
- echo ' ';
- if(is_dir($dir_name.$filename)) //判斷 是否為一個(gè)目錄
- {
- echo '<strong>'."<a href=".$dir_name.$filename.">".$filename."</a></strong><br>";
- scan_dir($dir_name.$filename.'/',$dir_flag+1); //$dir_flag標(biāo)志目錄樹層次
- }
- else
- {
- echo "<a href=".$dir_name.$filename.">".$filename."</a><br>";
- }
- }
- }
- closedir($dir_handle); //關(guān)閉目錄句柄
- echo "文件總數(shù):".$FILE_COUNT.'<br>';
- }
- scan_dir('D:/AppServ/www/mytest/shopping/payment/');
- /*總結(jié):
- 1,關(guān)于路徑 目錄的路徑末尾都加上 '/' 以便后面與文件名字符串連接 形成新的 路徑字符串
- 2,目錄遍歷 這是一個(gè)關(guān)于樹的問題
- 3,is_dir()函數(shù)第一個(gè)參數(shù)必須是一個(gè)能夠識(shí)別的PATH否則會(huì)因目錄不存在而返回一個(gè)false容易誤解
- 得出 “這不是一個(gè)目錄”的錯(cuò)誤結(jié)論 形成邏輯上的錯(cuò)誤
- 4,注意當(dāng)前路徑'.'和上一級(jí)路徑'..'的剔除 否則 在遞歸環(huán)節(jié)造成死循環(huán) 直至內(nèi)存耗盡出錯(cuò)。
- 5,dir_flag這個(gè)變量是記錄樹的深度 以便于目錄分級(jí)分層輸出 */
- /*不足
- 1,輸出排版不完善
- 2,邏輯與表示層混亂 不分明 大忌!
- 3,面向過程
- */
新聞熱點(diǎn)
疑難解答