在php中从文件中读取偶数行和奇数行

时间:2012-12-30 12:00:41

标签: php

我想从文本文件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); 

 ?>

实际上我并不了解如何实现它,根据我的代码,屏幕上没有显示输出。

3 个答案:

答案 0 :(得分:3)

<?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,反之亦然。然后,对于 if ,您可以检查i = 1或i = 0来做出决定。这样你就可以避免在每次传递中使用模数运算符并仍然得到相同的结果

答案 1 :(得分: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]);

答案 2 :(得分: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);
?>