任務:遍歷一個目錄並區分顯示其中的文件和子目錄文件夾:
1、目錄inc有以下內容:
子目錄 0 子目錄 a footer.html header.html login_function.inc.php mysqli_connect.php style.css |
2、現在PHP要遍歷inc目錄,並只顯示文件,不顯示目錄0和a,代碼如下:
$dir = $_SERVER['DOCUMENT_ROOT']; $dir = "$dir/inc/"; $d = opendir($dir); while(false !==($f=readdir($d))) { if(is_file()($f)){ echo " <h2>$f </h2>"; }else{ echo " <h2>是目錄$f </h2>"; } } closedir($d); |
結果卻只顯示了「footer.html」是文件,其它都變成目錄了:
是目錄. 是目錄.. 是目錄a footer.html 是目錄header.html 是目錄login_function.inc.php 是目錄mysqli_connect.php 是目錄style.css |
這是由於不能在is_file和is_dir()中直接使用「$f」,這樣會被PHP當作是根目錄下的該文件,而在我的根目錄下有footer.html這個文件,所以會正確顯示這個文件。其它則不行。代碼改成:
要正確顯示,需要改造代碼:
while(false !== ($f=readdir($d))) { if(is_file("$dir/$f")){ echo "<h2>$f</h2>"; }else{ echo "<h2>是目錄$f</h2>"; } } closedir($d); |