如何动态取消设置嵌套数组键?

How to dynamically unset nested array keys?

假设我有这个数组:

$doc = array(
    'nfe' => array(
        'inf' => array(
            'det' => array(
                'emit' => array(
                     'name' => 'My name'
                )
            )
        )
    )
)

和另一个包含我要取消设置的键的数组(按顺序):

$keys = ['nfe', 'inf', 'det', 'emit']

我怎样才能动态地做到这一点:

unset($doc['nfe']['inf']['det']['emit']);

基于数组 $doc$keys ?

玩弄我来自 的一些代码:

function unsetter($path, &$array) {
    $temp =& $array;
    $last = array_pop($path);

    foreach($path as $key) {
        $temp =& $temp[$key];
    }
    unset($temp[$last]);
}

这是一个eval方法:

function unsetter($path, &$array) {
    $path = "['" . implode("']['", $path) . "']";
    eval("unset($array{$path});");
}