我的功能:
function setItem(array $arr, $item, $value, $delimiter = '.') {
$nodes = explode($delimiter, $item);
$code = "\$arr['".join("']['", $nodes)."'] = \$value;";
eval($code);
return $arr;
}
使用:
$data = array();
$data = setItem($data, 'test.qwerty.sub', 'value');
有没有没有“eval”的方法?
最佳答案
是的,但它涉及使用引用:
function setItem(array &$arr, $path, $value, $delim = '.'){
$path = explode($delim, $path);
$root = &$arr;
// pointer to the current item
$current = &$arr;
foreach($path as $item){
$current[$item] = array();
// set pointer to the newly created array
$current = &$current[$item];
}
// reached the last path component;
// assign the value to it
$current = $value;
return $root;
}
关于php - 在数组中设置嵌套项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793782/