PHP feof()False作为第一个参数

PHP feof()False作为第一个参数,php,feof,Php,Feof,我最终“解决”了其他人的代码问题,因为网站关闭,我们无法找到他们,但我不使用PHP,我认为这是可行的,但原因不正确: 它们有如下特点: $file = ../somedir/somefile.txt; $fh = fopen($file, 'r'); while (!feof($fh)) { $line = fget(... 但是页面没有加载 根据日志中的错误,我最终将feof行更改为: while (feof(False, $fh)) { 这实际上似乎解决了这个问题,但在查看了feof()

我最终“解决”了其他人的代码问题,因为网站关闭,我们无法找到他们,但我不使用PHP,我认为这是可行的,但原因不正确:

它们有如下特点:

$file = ../somedir/somefile.txt;
$fh = fopen($file, 'r');
while (!feof($fh)) {
$line = fget(...
但是页面没有加载

根据日志中的错误,我最终将
feof
行更改为:

while (feof(False, $fh)) {
这实际上似乎解决了这个问题,但在查看了
feof()
的文档之后,我认为我所做的根本不对

添加
False
作为PHP的
feof()函数的第一个参数会产生什么影响

更新:日志错误是
feof()期望参数1是资源,布尔值在
中给出,我将布尔值表示为True-False,这就是为什么我将False设置为第一个参数

添加
False
作为PHP的
feof()
函数

好的,以下是文档所说的:

在文件指针上测试文件结尾

由于函数中只允许一个参数,如下所示:

bool feof ( resource $handle )
您正在设置的
False
基本上告诉脚本:

while ([the file handle doesn’t equals false do this]) {
所以你基本上是在以某种方式使逻辑短路。但是在没有看到完整的代码或错误消息的情况下,完全不清楚这样做会对整个应用程序行为产生什么影响

更新:因为您现在说错误日志显示:

feof() expects parameter 1 to be resource, boolean given in
这基本上意味着问题在于您试图打开并使用
$fh
创建文件句柄的
$file
不存在或无法读取:

$file = ../somedir/somefile.txt;
$fh = fopen($file, 'r');
现在,最好的解决方案是将条件包装到另一个条件中,如下所示:

$file = ../somedir/somefile.txt;
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}
$file = '../somedir/somefile.txt';
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}
但是现在看一下你的代码是那行
$file=../somedir/somefile.txt正确吗?难道不是:

$file = '../somedir/somefile.txt';
因此,您的代码如下所示:

$file = ../somedir/somefile.txt;
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}
$file = '../somedir/somefile.txt';
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}

但是,除了这些之外,我还要检查实际文件
。/somedir/somefile.txt是否存在,并且脚本是否可读。可能是位置已更改,或者连接到该文件的权限或用户已更改。这很可能是导致
feof()期望参数1是资源的根本原因,布尔值在
error中给出。

您能说明日志中的错误是什么吗?这将有助于确定最佳解决方案是什么。我看不出代码如何仍能正常工作(特别是原始循环的主体,包括
fgets()
。您已将循环中的负条件更改为正条件,但
feof())
只接受一个参数。PHP将抛出大量的E_警告,因为
警告:feof()只需要一个参数,2给定的
同意,feof只需要一个参数,一个资源。如果有任何问题,这应该会导致更多问题。日志中的错误是“feof()希望参数1是资源,布尔值在中给出”“我将布尔值视为True-False,这就是为什么我将False设置为第一个arg。”–如果您甚至不能正确解释错误消息,那么您可能根本不应该弄乱它……在我将错误添加到feof后,错误就停止了。@greggeventhal再次阅读我的完整答案。问题是
False
使逻辑短路。但根本问题是
。/somedir/somefile.txt文件本身无法读取或不存在。从逻辑角度看,我的
if(file_exists($filename)){
是一种更优雅的短路,但它不会改变根本问题。