21,886
社区成员
发帖
与我相关
我的任务
分享
$config = [
'a'=> [
'b'=>[
'c'=>1,
'd'=>1,
],
],
'e'=> [
'f'=>[
'g'=>1,
'h'=>[
'i'=>1,
'j'=>1,
],
],
],
];
/**
* @param $name
*/
function remove($name)
{
$config = [
'a'=> [
'b'=>[
'c'=>1,
'd'=>1,
],
],
'e'=> [
'f'=>[
'g'=>1,
'h'=>[
'i'=>1,
'j'=>1,
],
],
],
];
$name = explode('.', $name);
$remove = '$config';
foreach ($name as $key) {
$remove .= "['$key']";
}
eval("unset($remove);");
var_dump($config);
}
remove('a.b.c');
执行之后得到
array(2) {
["a"]=>
array(1) {
["b"]=>
array(1) {
["d"]=>
int(1)
}
}
["e"]=>
array(1) {
["f"]=>
array(2) {
["g"]=>
int(1)
["h"]=>
array(2) {
["i"]=>
int(1)
["j"]=>
int(1)
}
}
}
}
/**
* 移除配置
* @access public
* @param string $name 配置参数名(支持三级配置 .号分割)
* @return void
*/
public function remove($name)
{
if (!strpos($name, '.')) {
$name = $this->prefix . '.' . $name;
}
$name = explode('.', $name, 3);
if (count($name) == 2) {
unset($this->config[strtolower($name[0])][$name[1]]);
} else {
unset($this->config[strtolower($name[0])][$name[1]][$name[2]]);
}
}
不限制应该怎么写