栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用fseek逐行读取文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用fseek逐行读取文件

问题是使用fseek进行询问,因此只能假定性能是一个问题,而file()不是解决方案。这是使用fseek的一种简单方法:

我的file.txt

#file.txtLine 1Line 2Line 3Line 4Line 5

和代码:

<?php$fp = fopen('file.txt', 'r');$pos = -2; // Skip final new line character (Set to -1 if not present)$lines = array();$currentLine = '';while (-1 !== fseek($fp, $pos, SEEK_END)) {    $char = fgetc($fp);    if (PHP_EOL == $char) { $lines[] = $currentLine; $currentLine = '';    } else { $currentLine = $char . $currentLine;    }    $pos--;}$lines[] = $currentLine; // Grab final linevar_dump($lines);

输出:

array(5) {   [0]=>   string(6) "Line 5"   [1]=>   string(6) "Line 4"   [2]=>   string(6) "Line 3"   [3]=>   string(6) "Line 2"   [4]=>   string(6) "Line 1"}

您不必像我一样附加到$ lines数组,如果这是脚本的目的,则可以立即打印输出。如果要限制行数,也很容易引入计数器。

$linesToShow = 3;$counter = 0;while ($counter <= $linesToShow && -1 !== fseek($fp, $pos, SEEK_END)) {   // Rest of pre from example. After $lines[] = $currentLine; add:   $counter++;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号