2016-08-01 65 views
0

我有我不明白的行为代码片段。当传递给empty()的变量的不同副本时,TRUE值会给出不同的结果。为什么empty()对于变量和数组偏移的行为有所不同?

var_dump($this->controller->type['Company']['is_active']); // bool(true)

属性$controller$type属性是多阵列对象。的is_active价值bool(true)

应该是什么的empty()结果呢?

var_dump(!empty($this->controller->type['Company']['is_active'])); //false

OK,让我们创建一个副本

$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

有人能解释这种现象吗?如果VAR存在且非空,非零值

+1

事情是,如果'$这个 - >控制器 - >键入[ '公司'] [ 'is_active']实际上是'bool(true)'然后'var_dump(!empty($ this-> controller-> type ['Company'] ['is_active']));'实际上应该是'bool(真)'。因为你基本上在做'var_dump(!empty(true));''实际上'bool(true)'。这里有点腥...... – Andrew

+1

无法确认你的问题。 https://开头3v4l。org/NH3FN –

+1

调试:var_dump($ this-> controller-> type ['Company'] ['is_active'],$ temp);'所以我们可以看到他们真正的内容。 –

回答

0

请参考,PHP手册,http://php.net/manual/en/function.empty.php

返回FALSE。 否则返回TRUE。

请注意,空的作品通过变量而不是通过值传递。

以下的事情被认为是空的:

  • ""(空字符串)
  • 0(0作为整数)
  • 0.0(0为float)
  • "0"(0作为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • $var;(变量声明,但没有一个值)
相关问题