如何动态取消设置嵌套数组键?
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});");
}
假设我有这个数组:
$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});");
}