php - fgets - 两次读取第一行?

时间:2011-08-07 08:41:02

标签: php fgets

我有一个通过外部文件FGETS的while循环,然后在每一行上执行函数a()。

我想做的是先看第一行。如果该行符合某些条件,我想用它执行函数b(),然后让while循环在第2行+上运行a()函数。

如果第一行与标准不匹配,那么我希望while循环在1+行上运行a()函数。

这是否可以,而无需再次关闭并重新打开文件?

3 个答案:

答案 0 :(得分:4)

阅读第一行后,您可以使用fseek

将文件指针重置为文件开头
fseek($file,0);

答案 1 :(得分:0)

绝对。这是一种方式:

if (($line = fgets(...)) !== false)
{
  if (meets_criteria($line))
  {
    b($line);
  }
  else
  {
    a($line);
  };
  while (($line = fgets(...)) !== false)
  {
    a($line);
  };
};

随时修复发现的任何错误。

答案 2 :(得分:-1)

如果文件不是太大而无法读入内存,您可以使用file()而不是像这样的FGETS

$lines = file('the-data.file');
foreach($lines as $line){
 if (meets_criteria($line))
  {
    b($line);
    a(implode(array_slice($lines,2)));
  }
  else
  {
    a(implode($lines));
  };
};