Wenn Sie eine Variable deaktivieren möchten, können Sie sie einfach verwenden unset
unset($any_variable); // bool, object, int, string etc
Die Überprüfung auf ihre Existenz hat keinen Vorteil, wenn versucht wird, eine Variable zu deaktivieren.
Wenn die Variable ein Array ist und Sie ein Element deaktivieren möchten, müssen Sie sicherstellen, dass das übergeordnete Element zuerst vorhanden ist. Dies gilt auch für Objekteigenschaften.
unset($undefined_array['undefined_element_key']); // error - Undefined variable: undefined_array
unset($undefined_object->undefined_prop_name); // error - Undefined variable: undefined_object
Dies lässt sich leicht lösen, indem Sie das unsetin einen if(isset($var)){ ... }Block einwickeln .
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
Der Grund, warum wir nur die Variable ( übergeordnet ) überprüfen, ist einfach, dass wir die Eigenschaft / das Element nicht überprüfen müssen und dies viel langsamer zu schreiben und zu berechnen wäre, da dies eine zusätzliche Prüfung hinzufügen würde.
if(isset($array)){
...
}
if(isset($object)){
...
}
.vs
$object->prop_name = null;
$array['element_key'] = null;
// This way elements/properties with the value of `null` can still be unset.
if(isset($array) && array_key_exists('element_key', $array)){
...
}
if(isset($object) && property_exists($object, 'prop_name')){
...
}
// or
// This way elements/properties with `null` values wont be unset.
if(isset($array) && $array['element_key'])){
...
}
if(isset($object) && $object->prop_name)){
...
}
Dies ist selbstverständlich, aber es ist auch wichtig, dass Sie typedie Variable kennen, wenn Sie ein Element oder eine Eigenschaft abrufen, festlegen und deaktivieren. Bei Verwendung der falschen Syntax wird ein Fehler ausgegeben.
Dies gilt auch, wenn versucht wird, den Wert eines mehrdimensionalen Arrays oder Objekts zu deaktivieren. Sie müssen sicherstellen, dass der übergeordnete Schlüssel / Name vorhanden ist.
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
Beim Umgang mit Objekten gibt es noch etwas zu beachten, und das ist Sichtbarkeit.
Nur weil es existiert, heißt das nicht, dass Sie die Berechtigung haben, es zu ändern.