我有一些我不理解的代码片段。当在不同的变量副本中传递给empty()
时,TRUE值会给出不同的结果。
var_dump($this->controller->type['Company']['is_active']); // bool(true)
property $controller
是具有 $type
属性的对象,该属性是多数组。 is_active
的值为 bool(true)
empty()
的结果应该是什么?
var_dump(!empty($this->controller->type['Company']['is_active'])); //false
好的,让我们创建一个副本
$temp = $this->controller->type['Company']['is_active'];
var_dump(!empty($temp)); //true
嗯,结果不一样?
var_dump($this->controller->type['Company']['is_active'] === $temp);//true
铸造怎么样?
var_dump(!empty((int)$this->controller->type['Company']['is_active'])); //true
有人可以解释这种行为吗?
答案 0 :(得分:0)
请参考php手册,http://php.net/manual/en/function.empty.php
如果var存在并且具有非空的非零值,则返回FALSE。 否则返回TRUE。
请注意,空的工作方式是传递变量而不是传递值。
以下内容被认为是空的:
""
(空字符串)0
(0为整数)0.0
(0作为浮动)"0"
(0为字符串)NULL
FALSE
array()
(空数组)$var;
(声明的变量,但没有值)