[英]How can I tell what line a file resource is currently “on” in PHP?
使用PHP,可以使用fopen
和fgets
读取文件的内容。 每次调用fgets
,它都会返回文件中的下一行。
fgets
如何知道要读取的行? 换句话说,它如何知道它最后一次读取第5行,因此这次应该返回第6行的内容? 我有办法访问该行号数据吗?
(我知道这是可能通过读取文件的全部内容与数组做同样的事情file
,但我想和做到这一点fopen
。)
文件只是从头到尾读取的数据流。 操作系统会记住您迄今为止在该文件中所读取的位置。 如果需要,在应用程序中执行此操作也非常简单。 操作系统只关心字节的位置,而不关心行。
试想一下,顺序处理52张牌。 您交出第一张卡。 下次2.卡。 当您要发出3.卡时,您无需从头开始重新计数,甚至无需记住您所在的位置,只需分发下一张可用的卡即可,这将是第三张。
读取行可能需要做更多的工作,因为出于性能考虑,您希望缓冲从实际文件中读取的数据,但是它并不仅仅是记录最后一块数据的偏移量而已分发,找到下一个换行符,然后交出这两个点之间的所有数据。
PHP和OS都不需要保留行号,因为所有系统关心的都是“下一行”。 如果您想知道行号,可以保留一个计数器,并在每次应用程序读取行时对其进行递增。
$lineno=0;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
lineno++; // keep track of the line number
...
}
您可以只调用fgets
并在每次调用时增加var $line_number
。 这将告诉您线路已接通。
我有这个旧样品,我可以为您提供帮助:)
$File = file('path');
$array = array();
$linenr = 5;
foreach( $File AS $line_num => $line )
{
$array = array_push( $array , $line );
}
echo $array[($linenr-1)];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.