Можно ли удалить свойство объекта в PHP?

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

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

$a->new_property = $xyz;

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

Так,

$a->new_property = null;

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

Ответ 1

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())

Ответ 2

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

unset($object[$key])

Обновить

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

unset($object{$key})

Ответ 3

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

unset($object->$key);

Не нужно использовать скобки.