为什么empty()对变量和数组偏移的行为不同?

时间:2016-08-01 12:42:10

标签: php

我有一些我不理解的代码片段。当在不同的变量副本中传递给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

有人可以解释这种行为吗?

1 个答案:

答案 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;(声明的变量,但没有值)