2013-03-07 96 views
0

我是一名新的PHP開發人員,我剛剛開始使用PHP中的文件。 我有以下代碼來計算目錄中的txt文件數量並將它們的名稱存儲在數組中,然後使用循環顯示每個文件中的總行數! 這裏是代碼,幫助我出錯的地方!訪問數組中指定的文件

$dir = opendir('directory/'); 
$num_files = 0; 
$dir_files[] = array(); 
while (false !== ($file = readdir($dir))){ 
    if (!in_array($file, array('.', '..','Thumbs.db')) and !is_dir($file)){ 
    $num_files++; 
    echo $file; 
    array_push($dir_files,$file); 
    echo "<br />"; 
    } 
} 

echo "--------------------------------------<br />"; 
echo "Number of files in this directory: ".$num_files."<br />"; 
echo "--------------------------------------<br />"; 
foreach($dir_files as $dir_file=>$value){ 
    $file='directory/'.$value; 
    $linecount = 0; 
    $handle = fopen($file, "r"); 
    while(!feof($handle)){ 
     $line = fgets($handle); 
     $linecount++; 
    } 
    fclose($handle); 
    echo "File $file has $linecount lines!"; 
} 

我收到以下錯誤:

聲明:Array對d字符串轉換:\ XAMPP \ htdocs中\ PHP_practice \ read_lines_of_files.php第19行

警告:的fopen(目錄/陣列):未能打開流:在第21行D:\ xampp \ htdocs \ PHP_practice \ read_lines_of_files.php中沒有這樣的文件或目錄

警告:feof()期望參數1是資源,布爾值在D:\第22行的xampp \ htdocs \ PHP_practice \ read_lines_of_files.php

+0

你需要哪些幫助? – 2013-03-07 05:06:35

+0

腳本的哪部分失敗? – Sam 2013-03-07 05:06:46

+0

$ value是一個數組,所以你可以用print_r($ dir_files)獲得什麼; – 2013-03-07 05:09:37

回答

0

變化:

$dir_files[] = array(); 

$dir_files = array(); 

和: fopen()成功返回文件指針資源,或FALSE上error.As它拋出一個錯誤打開文件,FEOF( )正在接收FALSE而不是文件指針資源:所以你得到錯誤"expects parameter 1 to be resource, boolean given in"...

1

你的代碼是toooooooo長度年。試試這個:這會爲你完成整個功能,如果有任何問題,請告訴我。

foreach(glob('directory/*.txt',GLOB_BRACE) as $value){ 
    $file  =$value; 
    $linecount = 0; 
    $handle = fopen($file, "r"); 
    while(!feof($handle)){ 
     $line = fgets($handle); 
     $linecount++; 
    } 
    fclose($handle); 
    echo "File $file has $linecount lines!"; 
} 
+0

哦,這是完美的Prasanth;謝謝 – goseo 2013-03-07 05:40:37

+0

@Distributor:Cool:D – 2013-03-07 05:41:34