为什么没有空()在stdClass上工作

时间:2015-05-20 10:34:30

标签: php

我面对这种困境,基本上我想创建一个错误对象,如果某个任务没有得到满足。现在要了解我要发回给用户的内容,我需要检查该错误对象是空的还是有数据。问题是:

$obj = new stdClass();
var_dump(empty($obj)); // returns false

正如您在此 example 中所看到的那样,它正在返回false而不是true,因为它&#39 ;空。

$o = new stdClass();
$a = array();

var_dump(empty($o));
var_dump(empty($a));

Example

这适用于数组,但有没有人知道为什么这会发生在对象上?

我已经阅读了answers like this,声明将其转换为数组,但我的问题是:

  

为什么它在空的时候会返回false?它背后的逻辑是什么?   如果我想要一个阵列,我会从那开始。

1 个答案:

答案 0 :(得分:2)

来自php.net:

  

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

您创建的每个对象都不会为“空”。