-3

テキストファイルd.txtからデータを読みたい。次に、2つの新しいテキストファイルを作成し、別のファイルe.txtに偶数行を書き込み、別のファイルo.txtに奇数行を書き込みます。

 <?php
 $evenhandler = fopen("e.txt","w");        
 $oddhandler = fopen("o.txt","w");
 $handle = fopen('d.txt', 'r');
 while (!feof($handle))
   {
      $f=fgets($handle);
   fwrite($evenhandler,$f);
    }
  fclose($file); 

 ?>

実際、私はそれを実装する方法を理解していませんでした、そして私のコードによれば、出力は画面に表示されませんでした。

4

3 に答える 3

4
<?php
 $evenhandler = fopen("e.txt","w");        
 $oddhandler = fopen("o.txt","w");
 $handle = fopen('d.txt', 'r');
 $i=0;
 while (!feof($handle))
   {
      $f=fgets($handle);
      if($i%2==0)
      {
        fwrite($evenhandler,$f);
      }
      else
      {
        fwrite($oddhandler,$f);
      }
    $i++;
  }
  fclose($handle); 
  fclose($evenhandler); 
  fclose($oddhandler); 
?>

パフォーマンスのヒント:

パフォーマンスをさらに向上させることができます (入力ファイルが非常に大きい場合)。$iの値を0 として開始し、ループ内で 0 かどうかを確認して 1 に設定し、その逆も同様です。次に、決定を下すために i = 1 または i =0 かどうかを確認できますこのようにして、すべてのパスでモジュラス演算子を使用することを避けても、同じ結果を得ることができます

于 2012-12-30T12:04:04.223 に答える
2

モジュラス演算子を使用する%と、

 $outhandler[0] = fopen("e.txt","w");        
 $outhandler[1] = fopen("o.txt","w");
 $handle = fopen('d.txt', 'r');
 $linenum = 0;
 while (!feof($handle))
 {
    $f=fgets($handle);
    fwrite($outhandler[$linenum % 2],$f);
    $linenum++;
 }

fclose($handle);
fclose($outhandler[0]);
flcose($outhandler[1]);
于 2012-12-30T12:15:11.803 に答える
0

やあ、それは実際にはとても簡単で、ほぼ完了しています。偶数行と奇数行に異なる f.handler を渡すだけです。

<?php
$evenhandler = fopen("e.txt","w");        
$oddhandler = fopen("o.txt","w");
$data = file('d.txt'); // this reads entire file and puts it into array, each line separate item
for($i=0;$i<count($data);$i++) {
  // Even shorter, if you put all this in only 1 line :)
  $fHandler = ($i%2==0)? $evenhandler:$oddhandler;
  fwrite($fHandler, $data[$i];
}
fclose($evenhandler); 
fclose($oddhandler);
?>
于 2012-12-30T12:09:50.460 に答える