If var is not an array and passed by reference, unset actually disables the pointer, so it will not affect the original.
However, if var is an array , you can disable its keys. eg:
$arr = [ 'a' => 1, 'b' => ['c' => 3], ]; function del($key, &$arr) { $key = explode('.', $key); $end = array_pop($key); foreach ($key as $k) { if (is_array($arr[$k]) { $arr = &$arr[$k]; } else { return; // Error - invalid key -- doing nothing } } unset($arr[$end]); } del('b.c', $arr); // $arr = ['a' => 1, 'b' => []] del('b', $arr); // $arr = ['a' => 1]
SIDU
source share