程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中feof()函數的猜測

PHP中feof()函數的猜測

編輯:關於PHP編程

10.8.45.3.15

  PHP的官方手冊中,函數feof()下面的討論不少,對此做了一些相關的測試。

 <?  <<< <!DOCTYPE html>
 <html>
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <title>測試PHP中的feof()函數效果</title>
     </head>
     <body>
         <div>
  
  bool2str(      ( ==           "TRUE"     }           "FALSE"   
 
     
  = './7bytesfile'  = (, 'r'  (!     ("文件打開失敗"  
 ( = 0;  <= (); ++     (,       "文件位置" . () . ":<br />\n"      "執行fseek,尚未執行讀取操作之前,feof結果:" . bool2str(()) . "<br />\n"      "當前位置字符:" . () . "<br />\n"      "執行文件讀取操作之後,feof結果:" . bool2str(()) . "<hr />\n"  
      
 
  "ftell()結果:". (). "<hr />\n" 
 
 (, 4  "文件位置" . () . ":<br />\n"  "執行fseek,尚未執行讀取操作之前,feof結果:" . bool2str(()) . "<br />\n"  "當前位置字符:" . () . "<br />\n"  "執行文件讀取操作之後,feof結果:" . bool2str(()) . "<hr />\n" 
 (, 7  "文件位置" . () . ":<br />\n"  "執行fseek,尚未執行讀取操作之前,feof結果:" . bool2str(()) . "<br />\n"  "當前位置字符:" . () . "<br />\n"  "執行文件讀取操作之後,feof結果:" . bool2str(()) . "<hr />\n" (  
 
  = (, 'r'  (!     ("文件打開失敗"   (!(      = (      ( ===           'FALSE'     }              ( 
 
  <<<         </div>
     </body>
 </html>
  ?>

  針對這種情況的猜測是,在PHP中,feof()的實現方式並非直接檢查文件指針相對於文件的位置,而是根據某個標識返回結果。每次fseek()之後都會都會把這個標識設置為“False”,只有當執行一次文件內容讀取操作之後,才會根據文件讀取的結果對標識進行設置。

  根據這種猜測,可以使用兩種代碼邏輯。

  一個方法是不做feof()檢測,直接檢測內容讀取函數(比如fgetc()、fgets())的執行結果。

  (( = (     
 }

  這種處理辦法,利用了PHP被诟病的函數返回方式,所以得用“===”或“!==”進行檢測,不能把代碼簡化成:

 ( = ()) {}

  另外一個方法是先進行一次文件讀取,然後再進入feof()循環:

  = (  (!(     
      = ( }

  經過測試,似乎前一種方法效率會高一些。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved