eof() 函數(shù)檢測(cè)是否已到達(dá)文件末尾(eof).
如果文件指針到了 EOF 或者出錯(cuò)時(shí)則返回 TRUE,否則返回一個(gè)錯(cuò)誤(包括 socket 超時(shí)),其它情況則返回 FALSE.
語法:feof(file)
參數(shù) 描述
file 必需,規(guī)定要檢查的打開文件.
說明:file 參數(shù)是一個(gè)文件指針,這個(gè)文件指針必須有效,并且必須指向一個(gè)由 fopen() 或 fsockopen() 成功打開(但還沒有被 fclose() 關(guān)閉)的文件.
其中當(dāng)讀取行數(shù)包括文件結(jié)尾的時(shí)候,$result數(shù)組中總會(huì)比期望的內(nèi)容多出來一個(gè)元素:
(boolean)false
按說,如果讀取到最后一行,feof函數(shù)會(huì)返回TRUE,然后while循環(huán)就退出了,為什么不是呢?
1
while (!feof($hd)) {
事情原來是這樣子的:
feof() is, in fact, reliable. However, you have to use it carefully in conjunction with fgets(). A common (but incorrect) approach is to try something like this:
提示和注釋:
提示:feof() 函數(shù)對(duì)遍歷長(zhǎng)度未知的數(shù)據(jù)很有用。
注意:如果服務(wù)器沒有關(guān)閉由 fsockopen() 所打開的連接,feof() 會(huì)一直等待直到超時(shí)而返回 TRUE,默認(rèn)的超時(shí)限制是 60 秒,可以使用 stream_set_timeout() 來改變這個(gè)值.
注意:如果傳遞的文件指針無效可能會(huì)陷入無限循環(huán)中,因?yàn)?EOF 不會(huì)返回 TRUE.