1

つまり、渡したものをすべて新しい行としてテキストファイルに追加するphp投稿スクリプトがあるとします。


ファイルの名前がfile.txtで、次のようになっているとします。

11:45 Am
12:49 PM
Went to Lunch
3:25 PM

知りたいのですが、情報を3のペアとして扱うphpスクリプトを作成するにはどうすればよいですか。したがって、forループでは次のように表示されます。

line1 | line2 | line3
line4

line4を過ぎて何もないので、停止したことに注意してください。

4

3 に答える 3

5

使用できます(デモ

$chunksOfThree = array_chunk(file('/path/to/file', FILE_IGNORE_NEW_LINES), 3);
foreach ($chunksOfThree as $chunk) {
    echo implode(' | ', $chunk), PHP_EOL;
}

これにより、目的の出力が得られます

11:45 Am | 12:49 PM | Went to Lunch
3:25 PM

のマニュアルエントリを参照してください

于 2012-06-17T07:16:34.403 に答える
1

fgetsはファイルから1行全体を読み取ります。それはfreadのようなものより遅いですが、あなたが望むことをします。

file関数を使用して、ファイル全体を配列に読み込むこともできます。配列の各要素は、ファイルの行に対応しています。

読み取られる行数が3の倍数でない場合は、最後の1行または2行を無視してください。

fgetsこれ以上データがない場合はfalseを返すので、それをチェックして、トリプレットエントリの1つが不完全であるかどうかを判断できます。

while(!feof($fp)) {
    $line1 = fgets($fp);
    $line2 = fgets($fp);
    $line3 = fgets($fp);

    if ($line2 === false) {
        echo "$line1";
    } else if ($line3 == false) {
        echo "$line1 | $line2";
    } else {
        echo "$line1 | $line2 | $line3\n";
    }
于 2012-06-17T07:15:40.223 に答える
0

このコードを使用できます

<?php
$filename = "test.txt";
$fp = fopen( $filename, "r" ) or die("Couldn't open $filename");
$i=0;
while ( ! feof( $fp ) ) {
   $line = fgets( $fp, 1024 );
   if($i==2)
   {
      print "$line";
      $i=0;
      print "<br>";
   }
   else
   {
      print "$line | ";
      $i++;
   }
}
?>

Output : 

11:45 Am | 12:49 PM | Went to Lunch 
3:25 PM | 
于 2012-06-17T07:13:38.007 に答える