web-dev-qa-db-ja.com

PHPでオブジェクトのプロパティを削除することはできますか?

stdObjectが言うなら、$a

新しいプロパティ$aを割り当てても問題ありません。

$a->new_property = $xyz;

しかし、それを削除したいので、unsetはここでは役に立ちません。

そう、

$a->new_property = null;

それは一種です。しかし、より「エレガントな」方法はありますか?

166
valk
unset($a->new_property);

これは、配列要素、変数、およびオブジェクト属性に対して機能します。

例:

$a = new stdClass();

$a->new_property = 'foo';
var_export($a);  // -> stdClass::__set_state(array('new_property' => 'foo'))

unset($a->new_property);
var_export($a);  // -> stdClass::__set_state(array())
290
Yanick Rochon

これは、オブジェクトをループしている場合にも特に機能します。

unset($object[$key])

更新

@CXJで述べられているように、PHPの新しいバージョンは致命的なエラーFatal error: Cannot use object of type Object as arrayをスローします。その場合、代わりにブラケットを使用できます

unset($object{$key})
37
Sajjad Ashraf

これは、オブジェクトをループしている場合にも機能します。

unset($object->$key);

ブラケットを使用する必要はありません。

1
dandyboh