Si vous souhaitez désactiver une variable, vous pouvez simplement utiliser unset
unset($any_variable);
La vérification de son existence n'a aucun avantage lorsque vous essayez de désactiver une variable.
Si la variable est un tableau et que vous souhaitez annuler la définition d'un élément, vous devez d'abord vous assurer que le parent existe, cela vaut également pour les propriétés d'objet.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
Ceci est facilement résolu en enveloppant le unsetdans un if(isset($var)){ ... }bloc.
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
La raison pour laquelle nous ne vérifions que la variable ( parent ) est simplement parce que nous n'avons pas besoin de vérifier la propriété / l'élément et que cela serait beaucoup plus lent à écrire et à calculer car cela ajouterait une vérification supplémentaire.
if(isset($array)){
...
}
if(isset($object)){
...
}
.contre
$object->prop_name = null;
$array['element_key'] = null;
if(isset($array) && array_key_exists('element_key', $array)){
...
}
if(isset($object) && property_exists($object, 'prop_name')){
...
}
if(isset($array) && $array['element_key'])){
...
}
if(isset($object) && $object->prop_name)){
...
}
Cela va sans dire, mais il est également crucial que vous connaissiez typela variable lors de l'obtention, de la définition et de la désactivation d'un élément ou d'une propriété; l'utilisation d'une syntaxe incorrecte provoquera une erreur.
C'est la même chose lorsque vous essayez d'annuler la valeur d'un tableau ou d'un objet multidimensionnel. Vous devez vous assurer que la clé / le nom parent existe.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Lorsqu'il s'agit d'objets, il y a autre chose à penser, c'est la visibilité.
Ce n'est pas parce qu'il existe que vous avez la permission de le modifier.