Si j'ai un stdObject
dire, $a
.
Bien sûr, il n’ya aucun problème à assigner une nouvelle propriété, $a
,
$a->new_property = $xyz;
Mais alors je veux l'enlever, donc unset
n'est d'aucune aide ici.
Alors,
$a->new_property = null;
c'est gentil. Mais y a-t-il un moyen plus "élégant"?
unset($a->new_property);
Cela fonctionne pour les éléments de tableau, les variables et les attributs d'objet.
Exemple:
$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())
Cela fonctionne aussi spécialement si vous passez en boucle sur un objet.
unset($object[$key])
Les versions les plus récentes de PHP déclenchent une erreur irrécupérable Fatal error: Cannot use object of type Object as array
comme mentionné par @CXJ. Dans ce cas, vous pouvez utiliser des crochets à la place
unset($object{$key})
Cela fonctionne également si vous passez en boucle sur un objet.
unset($object->$key);
Pas besoin d'utiliser des crochets.