Якщо ви хочете скасувати змінну, ви можете просто використовувати unset
unset($any_variable);
Перевірка її існування не приносить користі при спробі зняти змінну.
Якщо змінною є масив, і ви хочете зняти елемент, ви повинні переконатися, що батьківський існує спочатку, це стосується і властивостей об’єкта.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
Це легко вирішити, загорнувши unsetв if(isset($var)){ ... }блок.
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
Причина, по якій ми перевіряємо лише змінну ( батьківську ), полягає лише в тому, що нам не потрібно перевіряти властивість / елемент, і це робить записування та обчислення набагато повільніше, оскільки це додасть додаткову перевірку.
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)){
...
}
Це само собою зрозуміло, але також важливо, щоб ви знали typeзмінну під час отримання, встановлення та зняття елемента або властивості; використання неправильного синтаксису призведе до помилки.
Це те саме при спробі скасувати значення багатовимірного масиву або об'єкта. Ви повинні переконатися, що існує батьківський ключ / ім’я.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Маючи справу з предметами, слід подумати про інше, і це видимість.
Те, що воно існує, не означає, що у вас є дозвіл його змінювати.