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_existsまたはReflectionClass::hasPropertyで確認したいかもしれません

于 2013-05-24T09:16:10.037 に答える
4

と の両方を組み合わせて使用​​する必要がありissetますproperty_exists

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

何も設定されていないプロパティが存在する可能性があり、期待どおりにアクセスできません。

于 2013-05-24T09:21:18.223 に答える