从多个变量中获取数组值

时间:2018-02-03 23:37:32

标签: php json

所以我有一个字符串$ key,这就像system.style.background一样,我在角色中爆炸了。'到$ exp。我还有一些解码的JSON $system

我想做这样的事情

echo $system[$exp[0]][$exp[1]][$exp[2]]

将是

echo $system["system"]["style"]["background"]

但是,$ key可以是任意字符串,具有n个分隔符。如

  • system
  • system.style
  • system.style.background
  • system.style.background.description

我如何编写一个带字符串的函数并返回上面的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]];
}

编辑:不重复,因为这是一个关联数组

2 个答案:

答案 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