Intereting Posts

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

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

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

 $a->new_property = $xyz; 

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

Так,

 $a->new_property = null; 

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

 unset($a->new_property); 

это работает для элементов массива, переменных и атрибутов объектов

** ИЗМЕНИТЬ **

Я не знаю, как вы использовали unset() , но так оно и работает для меня:

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

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

 unset($object[$key]) 

Обновить

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

 unset($object->{$key})