Si tengo una stdObject
palabra, $a
.
Claro que no hay problema para asignar una nueva propiedad $a
,
$a->new_property = $xyz;
Pero luego quiero eliminarlo, por unset
lo 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
. ;-)array
en 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 array
como 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