Массив многомерен и имеет переменное количество под-клавиш, например
$arr[$a][$b][$c] = 'X';
3 в этом случае. Я хочу создать функцию, которая принимает строку как abc
как аргумент и проверяет, имеет ли массив этот ключ, а затем отключает ее: unset ($ arr [$ a] [$ b] [$ c]).
если я даю ему ab
тогда он должен быть отменен ($ arr [$ a] [$ b])
Буду признателен за любую помощь …
Вот рекурсивный подход к вашей проблеме:
function removeByStr($key, &$arr) { if(!is_array($key)) { $key = explode(".", $key); } $i = array_shift($key); if(count($key) == 0) { if(!isset($arr[$i])) { return; } unset($arr[$i]); } else if(isset($arr[$i]) && is_array($arr[$i])) { removeByStr($key, $arr[$i]); } }
сfunction removeByStr($key, &$arr) { if(!is_array($key)) { $key = explode(".", $key); } $i = array_shift($key); if(count($key) == 0) { if(!isset($arr[$i])) { return; } unset($arr[$i]); } else if(isset($arr[$i]) && is_array($arr[$i])) { removeByStr($key, $arr[$i]); } }