[英]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.