Можно ли удалить свойство объекта в PHP? - PullRequest
167 голосов
/ 30 августа 2010

Если у меня есть stdObject скажем, $a.

Конечно, нет проблем с назначением нового свойства, $a,

$a->new_property = $xyz;

Но тогда я хочуудалите его, так что unset здесь не поможет.

Итак,

$a->new_property = null;

вроде как.Но есть ли более «элегантный» способ?

Ответы [ 3 ]

293 голосов
/ 30 августа 2010
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())
37 голосов
/ 09 сентября 2014

Это также работает, особенно если вы зацикливаетесь на объекте.

unset($object[$key])

Обновление

Более новые версии PHP генерируют фатальную ошибку Fatal error: Cannot use object of type Object as array, как упоминалось @CXJ. В этом случае вы можете использовать скобки вместо

unset($object{$key})
1 голос
/ 28 февраля 2019

Это также работает, если вы зацикливаетесь на объекте.

unset($object->$key);

Нет необходимости использовать скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...