如何删除嵌套关联数组的元素



我有一个数组形式为array([test1]=>array([test2]=>array([Ttest3]=>Hello((,我需要创建一个函数,我需要将数组中的键传递给它,它会删除它。例如,remove('test2'(;通过递归,我试图在数组中找到这个元素,如果有,我试图删除它

function del_key($key, array $arr) {
if (isset($arr[$searchKey])) {
unset($arr[$searchKey]);
}
foreach ($arr as $key => &$param) {
if (is_array($param)) {
self::del_key($searchKey, $param);
}
}
}

您没有显示整个函数,因此不容易理解它。不管怎样,完成这项工作的递归函数如下:

function array_remove_recursive(array &$array, array $keys_to_remove)
{
foreach ($array as $key => &$value) {
if (in_array($value, $keys_to_remove, true)) {
unset($array[$key]);
} elseif (is_array($value)) {
array_remove_recursive($value, $keys_to_remove);
}
}
}

它可以在一次扫描中删除多个键。

如果您需要它作为类方法,只需相应地更正递归调用

最新更新