访问数组中命名的文件

时间:2013-03-07 05:05:14

标签: php file

我是一名新的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!";
}

我收到以下错误:

注意:第19行的D:\ xampp \ htdocs \ PHP_practice \ read_lines_of_files.php中的数组到字符串转换

警告:fopen(目录/数组):无法打开流:第21行的D:\ xampp \ htdocs \ PHP_practice \ read_lines_of_files.php中没有此类文件或目录

警告:feof()要求参数1为资源,布尔值在第22行的D:\ xampp \ htdocs \ PHP_practice \ read_lines_of_files.php中给出

2 个答案:

答案 0 :(得分:1)

你的代码太长了。试试这个:这将为您完成整个功能,如果有任何问题,请告诉我。

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!";
}

答案 1 :(得分:0)

变化:

$dir_files[] = array();

$dir_files = array();

和: 成功时fopen()返回文件指针资源,错误时返回FALSE。由于打开文件时出错,feof()接收FALSE而不是文件指针资源:所以你得到错误"expects parameter 1 to be resource, boolean given in"...