Se você gostaria de remover uma variável, então você pode apenas usar unset
unset($any_variable);
Verificar sua existência não traz nenhum benefício ao tentar remover a definição de uma variável.
Se a variável é um array e você deseja remover a definição de um elemento, você deve se certificar de que o pai existe primeiro, isso também se aplica às propriedades do objeto.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
Isso é facilmente resolvido envolvendo o unsetem um if(isset($var)){ ... }bloco.
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
A razão pela qual apenas verificamos a variável ( pai ) é simplesmente porque não precisamos verificar a propriedade / elemento e fazer isso seria muito mais lento para escrever e calcular, pois adicionaria uma verificação extra.
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)){
...
}
Isso nem é preciso dizer, mas também é crucial que você conheça a função typeda variável ao obter, definir e remover a definição de um elemento ou propriedade; usar a sintaxe errada gerará um erro.
É o mesmo ao tentar remover o valor de uma matriz ou objeto multidimensional. Você deve certificar-se de que a chave / nome pai 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);
}
Ao lidar com objetos, há outra coisa em que pensar, que é a visibilidade.
Só porque existe, não significa que você tem permissão para modificá-lo.