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

次のエラーが表示されます。

注意: 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 がリソースであると想定しており、22 行目の D:\xampp\htdocs\PHP_practice\read_lines_of_files.php で指定されたブール値です。

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 に答える