我是一名新的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中给出
答案 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"...