当前位置: 首页 > 面试题库 >

在写上下文中不能使用方法返回值

宦烈
2023-03-14
问题内容

我认为以下代码应该可以工作,但是不能 (编辑:现在可以在PHP 5.5+中工作)

if (!empty($r->getError()))

getError()简单地在哪里:

public function getError()
{
    return $this->error;
}

但是我最终遇到了这个错误:

在写上下文中不能使用方法返回值

这是什么意思?这不只是阅读吗?


问题答案:

empty() 需要通过引用访问该值(以检查该引用是否指向存在的对象),并且5.5之前的PHP不支持对从函数返回的临时值的引用。

但是,您真正的问题是,您empty()根本使用了所有内容,错误地认为“空”值与“假”有什么不同。

空只是的别名!isset($thing) || !$thing。当您要检查的事物始终存在时(在PHP中,函数调用的结果始终存在),该empty()函数 不过是一个否定运算符

PHP 没有空性的概念 。评估为false的值为空,评估为true的值非空。这是同一件事。这段代码:

$x = something();
if (empty($x)) …

和这个:

$x = something();
if (!$x) …

在所有情况下,所有数据类型都 具有 相同的结果 (因为$x定义empty()是多余的)。

方法的返回值始终存在(即使您没有return语句,返回值也存在并包含null)。因此:

if (!empty($r->getError()))

在逻辑上等效于:

if ($r->getError())


 类似资料:
  • 问题内容: 我收到此错误,无法显示它的开头或结尾。 确切的错误消息是: 致命错误:在第48行的/home/curricle/public_html/descarga/index.php中的写入上下文中无法使用函数返回值 第48行是: 这可能是怎么回事? 这是全部功能: 问题答案: 你的意思是 虽然顺便说一句

  • 问题内容: 您能帮我用下面的代码吗?错误是: “不能在静态上下文中使用此” 问题答案: 参见,“ this”关键字指的是当前对象,这是由于正在执行哪种方法。不能使用类的实例调用静态方法。这就是为什么不能在上面的示例中以静态方法使用“ this”的原因,因为它试图打印当前未创建的当前实例。因此,我认为这就是为什么您会遇到编译时错误。

  • 你能帮我用下面的代码吗。错误是:“不能在静态上下文中使用此”

  • 我相信这是一个愚蠢的问题,但我已经讨论了很久了。。我试图创建一个java程序,根据用户输入的年数和金额计算复利。但我一直遇到一个错误,void方法无法返回值。因此,我将方法切换为double,因为这是将返回的内容,但它告诉我double方法必须返回double。即使我在循环中返回一个双倍。。。请帮忙

  • 重写的方法可以有不同的返回类型吗?

  • 问题内容: 每当我尝试在mysql中调用存储过程以返回结果集时,它总是说“在给定上下文中不能返回结果集”。 我用谷歌搜索它,有人说这是mysql bug,有人说你应该改变你的mysqli驱动程序,然后.... 情况: 使用mysqli驱动程序客户端API库版本5.0.51a,PHP版本5.2.4-2ubuntu5.6,使用Zend 1.9 RC 1 Mysqli适配器。 我该怎么办!? 问题答案: