PHP头条
热点:

PHP中feof()函数的猜测


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()循环:

  = (  (!(     
      = ( }

  经过测试,似乎前一种方法效率会高一些。

www.phpzy.comtrue/php/2618.htmlTechArticlePHP中feof()函数的猜测 10.8.4 5.3.15 PHP的官方手册中,函数feof()下面的讨论不少,对此做了一些相关的测试。 ? !DOCTYPE html html head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" title测试...

相关文章

相关频道:

PHP之友评论

今天推荐