Если у меня есть 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);
Не нужно использовать скобки.