Si desea desarmar una variable, puede usar unset
unset($any_variable);
Verificar su existencia no tiene ningún beneficio al intentar desarmar una variable.
Si la variable es una matriz y desea desarmar un elemento, debe asegurarse de que el padre exista primero, esto también se aplica a las propiedades del objeto.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
Esto se resuelve fácilmente envolviendo el unseten un if(isset($var)){ ... }bloque.
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
La razón por la que solo verificamos la variable ( padre ) es simplemente porque no necesitamos verificar la propiedad / elemento y hacerlo sería mucho más lento de escribir y calcular, ya que agregaría una verificación adicional.
if(isset($array)){
...
}
if(isset($object)){
...
}
.vs
$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)){
...
}
No hace falta decirlo, pero también es crucial que conozca el valor typede la variable al obtener, configurar y desarmar un elemento o propiedad; el uso de la sintaxis incorrecta arrojará un error.
Es lo mismo cuando se intenta anular el valor de una matriz u objeto multidimensional. Debe asegurarse de que exista el nombre o la clave principal.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Cuando se trata de objetos, hay otra cosa en la que pensar y es la visibilidad.
El hecho de que exista no significa que tenga permiso para modificarlo.