以下代码(#1):
var_dump($myObject->getBook()->getCollection());
$testArray=Array();
var_dump($testArray);
var_dump(empty($testArray));
...将输出:
array(0) { } array(0) { } bool(true)
以下代码(#2):
var_dump($myObject->getBook()->getCollection());
$testArray=Array();
var_dump($testArray);
var_dump(empty($myObject->getBook()->getCollection()));
...将输出:
无。没有错误,没有单个字符。没什么。
class Book{
protected $bidArray=Array();
public function getCollection(){
return $this->bidArray;
}
}
那里发生了什么?
答案 0 :(得分:7)
empty()
不是一个函数,虽然它看起来像一个函数。它只是一种特殊的语法,只能 与变量一起工作,例如empty($abc)
。您根本无法使用empty(123)
或empty($obj->getSth())
等表达式。
答案 1 :(得分:3)
你不能将empty()
与变量以外的任何东西一起使用(也就是说没有函数调用)。
var_dump(empty($myObject->getBook()->getCollection()));
您必须关闭错误显示,如下所示:
<?php
class Bar {
function foo() {
}
}
$B = new Bar();
empty($B->foo());
给出
PHP致命错误:无法在第9行的D:\ cw \ home \ andreas \ test \ empty.php中的写入上下文中使用方法返回值
致命错误:第9行的D:\ cw \ home \ andreas \ test \ empty.php中的写入上下文中不能使用方法返回值
在我当地。
尝试在ini_set('display_errors', true)
之前执行var_dump
,看看是否出现错误消息
答案 2 :(得分:2)
empty()仅检查变量,因为其他任何内容都会导致解析 错误。换句话说,以下内容不起作用: 空(修整($名))。
这是因为empty()
不是一个函数,而是一个语言结构,因此仅限于此行为。
答案 3 :(得分:2)
使用empty()不能直接检查方法的返回值。更多信息:Can't use method return value in write context