【问题标题】:accessing files named in an array访问以数组命名的文件
【发布时间】:2013-03-07 05:05:14
【问题描述】:

我是一名新的 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(directory/Array): failed to open stream: No such file or directory in D:\xampp\htdocs\PHP_practice\read_lines_of_files.php on line 21

警告:feof() 期望参数 1 是资源,布尔值在 D:\xampp\htdocs\PHP_practice\read_lines_of_files.php 第 22 行给出

【问题讨论】:

  • 您在哪方面需要帮助?
  • 脚本的哪一部分失败了?
  • $value 是一个数组,因此请检查您使用 print_r($dir_files); 得到的结果
  • print_r($dir_files) 结果:数组 ( [0] => 数组 ( ) [1] => file1.txt [2] => file2.txt )

标签: php file


【解决方案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!";
}

【讨论】:

  • 哦,这是完美的 Prasanth;谢谢
【解决方案2】:

改变:

$dir_files[] = array();

$dir_files = array();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 2018-06-01
    • 2017-05-12
    • 2015-01-14
    • 2010-09-14
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多