Si tengo una stdObjectpalabra, $a.
Claro que no hay problema para asignar una nueva propiedad $a,
$a->new_property = $xyz;
Pero luego quiero eliminarlo, por unsetlo que no es de ayuda aquí.
Entonces,
$a->new_property = null;
es algo así ¿Pero hay una manera más 'elegante'?

Respuestas:
Esto funciona para elementos de matriz, variables y atributos de objeto.
Ejemplo:
fuente
$o=(object)array('a','b','c');(¡Tiene que convertir el objeto (atrás) en una matriz, incluso para acceder simplemente a tales propiedades!)object, no unarray. ;-)arrayen unobject? Simplemente no tiene sentido (incluso si PHP lo permite). No codificaré ni difundiré malos hábitos de programación al comentar sobre esto :) Sin ofender.unset($o->{0});o$k = 0; unset($o->$k);.Esto también funciona especialmente si está recorriendo un objeto.
Actualizar
Las versiones más nuevas de PHP arrojan un error fatal
Fatal error: Cannot use object of type Object as arraycomo lo menciona @CXJ. En ese caso, puedes usar corchetesfuente
unset($object[$key])funciona yunset($object->{$key})no funciona (para ser más precisos,unset($object['literal_key'])yunset($object->{'literal_key'})). PS Hm, puedo estar equivocado, sin embargo, pensar en lo que estoy editando es un objeto, no una matrizEsto también funciona si está recorriendo un objeto.
No es necesario usar corchetes.
fuente