Jeśli chcesz usunąć ustawienie zmiennej, możesz po prostu użyć unset
unset($any_variable);
Sprawdzanie jej istnienia nie przynosi żadnych korzyści przy próbie cofnięcia ustawienia zmiennej.
Jeśli zmienna jest tablicą i chcesz usunąć ustawienie elementu, musisz upewnić się, że rodzic istnieje jako pierwszy, dotyczy to również właściwości obiektu.
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
To jest rozwiązywane przez owijanie unsetw if(isset($var)){ ... }bloku.
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
Powodem, dla którego sprawdzamy tylko zmienną ( rodzica ), jest po prostu to, że nie musimy sprawdzać właściwości / elementu, a pisanie i obliczanie byłoby dużo wolniejsze, ponieważ wymagałoby to dodatkowego sprawdzenia.
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)){
...
}
Jest to oczywiste, ale ważne jest również, aby znać typezmienną podczas pobierania, ustawiania i rozbrajania elementu lub właściwości; użycie złej składni spowoduje zgłoszenie błędu.
To samo dzieje się przy próbie cofnięcia wartości wielowymiarowej tablicy lub obiektu. Musisz upewnić się, że klucz / nazwa nadrzędna istnieje.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Kiedy mamy do czynienia z przedmiotami, należy pomyśleć o innej rzeczy, a jest to widoczność.
To, że istnieje, nie oznacza, że masz uprawnienia do jego modyfikacji.