Bir değişkeni geri almak istiyorsanız, sadece unset
unset($any_variable);
Bir değişkeni sıfırlamaya çalışırken varlığını kontrol etmenin hiçbir faydası yoktur.
Değişken bir diziyse ve bir elemanı geri almak istiyorsanız, önce ebeveynin var olduğundan emin olmalısınız , bu nesne özellikleri için de geçerlidir.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
Bu, unsetbir if(isset($var)){ ... }bloğun içine sarılarak kolayca çözülür .
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
Sadece değişkeni ( üst öğe) kontrol etmemizin nedeni, özelliği / öğeyi kontrol etmemizin gerekmemesidir ve bunu yapmak fazladan bir kontrol ekleyeceği için yazmak ve hesaplamak çok daha yavaş olacaktır.
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)){
...
}
Bu söylemeye gerek yok ama typebir öğeyi veya özelliği alırken, ayarlarken ve bozarken değişkeni bilmeniz de çok önemlidir ; yanlış sözdizimini kullanmak bir hataya neden olur.
Çok boyutlu bir dizinin veya nesnenin değerini silmeye çalışırken de aynıdır. Ana anahtarın / adın var olduğundan emin olmalısınız.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Nesnelerle uğraşırken düşünülmesi gereken başka bir şey daha var ve bu da görünürlük.
Sadece var olması onu değiştirme izniniz olduğu anlamına gelmez.