php的官方手册中,函数feof()下面的讨论不少,对此做了一些相关的测试。
\n
\n
\n
\n
\n
\n
\n
\n
\n
针对这种情况的猜测是,在php中,feof()的实现方式并非直接检查文件指针相对于文件的位置,而是根据某个标识返回结果。每次fseek()之后都会都会把这个标识设置为“false”,只有当执行一次文件内容读取操作之后,才会根据文件读取的结果对标识进行设置。
根据这种猜测,可以使用两种代码逻辑。
一个方法是不做feof()检测,直接检测内容读取函数(比如fgetc()、fgets())的执行结果。
这种处理办法,利用了php被诟病的函数返回方式,所以得用“===”或“!==”进行检测,不能把代码简化成:
另外一个方法是先进行一次文件读取,然后再进入feof()循环:
经过测试,似乎前一种方法效率会高一些。
http://www.bkjia.com/phpjc/440135.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/440135.htmltecharticle10.8.4 5.3.15 php的官方手册中,函数feof()下面的讨论不少,对此做了一些相关的测试。 ? !doctype html html head meta http-equiv=content-type content=tex...