所以我有一个字符串$ key,这就像system.style.background
一样,我在角色中爆炸了。'到$ exp。我还有一些解码的JSON $system
。
我想做这样的事情
echo $system[$exp[0]][$exp[1]][$exp[2]]
将是
echo $system["system"]["style"]["background"]
但是,$ key可以是任意字符串,具有n个分隔符。如
我如何编写一个带字符串的函数并返回上面的json值?
编辑:这样做的一种方式是
if(isset($exp[0])){
$config[$exp[0]];
}
if(isset($exp[1])){
$config[$exp[0]][$exp[1]];
}
if(isset($exp[n])){
$config[$exp[0]][$exp[1]][$exp[n]];
}
编辑:不重复,因为这是一个关联数组
答案 0 :(得分:2)
显然,PHP缺少内置函数来访问深度动态深度数组。但可以使用臭名昭着的eval
函数来完成。阅读链接免责声明并小心使用。
$system["system"]["style"]["background"]["description"] = "found it";
$input = "system.style.background.description";
$exp = explode(".", $input);
$code = '$system';
foreach ($exp as $level) $code .= "['$level']";
eval("\$result = $code;");
var_dump($result);
答案 1 :(得分:0)
不确定你在问什么,但这可以解决你的问题:)
$config = ...
$exp = ...
$i = 0;
while (isset($exp[$i])){
$config = $config[$exp[$i]];
++$i;
}
$config // There you have your final config