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

我收到以下错误:

注意:第 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 是资源,布尔值在 D:\xampp\htdocs\PHP_practice\read_lines_of_files.php 第 22 行给出

4

2 回答 2

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!";
}
于 2013-03-07T05:21:21.153 回答
0

改变:

$dir_files[] = array();

$dir_files = array();

并且: fopen()在成功或错误时返回文件指针资源。FALSE因为它在打开文件时抛出错误,所以 feof() 正在接收 FALSE 而不是文件指针资源:所以你得到错误"expects parameter 1 to be resource, boolean given in"...

于 2013-03-07T05:10:32.893 回答