从文件中读取第一行的最快方法

新手上路,请多包涵

仅从文件中读取第一行的最快、最简单的方法是什么?我知道您可以使用 file ,但就我而言,浪费时间加载整个文件是没有意义的。

最好是单线。

原文由 Jonah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 648
2 个回答

好吧,你可以这样做:

 $f = fopen($file, 'r');
$line = fgets($f);
fclose($f);

这不是一行,但是如果您将其设置为一行,您要么会因为错误检查而被搞砸,要么让资源打开的时间超过您需要的时间,所以我会说保留多行

编辑

如果您 绝对 知道该文件存在,则可以使用单行:

 $line = fgets(fopen($file, 'r'));

原因是 PHP 为资源实现了 RAII

这意味着当文件句柄超出范围时(在这种情况下,在调用 fgets 之后立即发生),它将被关闭。

原文由 ircmaxell 发布,翻译遵循 CC BY-SA 3.0 许可协议

在现代 PHP 中使用 SplFileObject

 $fileObject = new \SplFileObject('myfile');
$line = $fileObject->current();


补充信息

使用 SplFileObject 也很容易找行,例如跳过 2 行;

 $fileObject = new \SplFileObject('myfile');

$fileObject->seek(2);
$line = $fileObject->current();

或阅读前 10 行;

 $fileObject = new \SplFileObject('myfile');

$lines = '';
for ($i = 0; $i < 10 && $fileObject->valid(); ++$i) {
    $lines .= $fileObject->getCurrentLine();
}

_注意_: getCurrentLine() 将读取当前行并将内部光标移动到下一行(本质上是 current() + next()

原文由 Fabien Sa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题