Так вы только копируете
значение (строку "1") из подмассива в переменную:
$del = $arr[1]['one'];
В переменную
$del
записался байт ASCII-сивола "1", условно говоря.
unset здорового человека именно такой:
unset($arr[1]['one'])
unset курильщика можно организовать записью
ссылки на массив в переменную. Но конкретный ключ всё равно придётся указывать внутри unset:
$arr = [ 1 => [
'one' => '111',
'two' => '222',
], ];
$del = & $arr[1]; // ссылка на массив
unset($del['one']); // удаление ключа из массива по ссылке
print_r($arr); // результат Array ( [1] => Array ( [two] => 222 ) )
Попытка удалить полную ссылку на элемент не сработает, т.к. она просто удалит "связь" этой переменной
$del
с элементом исходного массива. А массив останется без изменений.
$del = & $arr[1]['one']; // ссылка на элемент, который хочется удалить
unset($del); // не сработает. Просто разорвёт ссылку $del на элемент