2

我有对象:

class Obj
{
    public $foo;
    public $bar;
}

$obj = new Obj();

print_R($obj);

输出:

Obj Object
(
    [foo] => 
    [bar] => 
)

var_dump(isset($obj->foo));

输出bool(false)

如何检查对象中是否设置了变量?

4

2 回答 2

5

因为

$foo = null;
var_dump(isset($foo)); // false

也许你想用property_existsReflectionClass::hasProperty检查它

于 2013-05-24T09:16:10.037 回答
4

您应该同时使用issetproperty_exists

if (property_exists($obj,$foo) && isset($obj->$foo)) {
   // use $obj->foo
}

一个属性可能存在,没有任何设置,无法按预期访问。

于 2013-05-24T09:21:18.223 回答