$lookup_table = array ("a" => "['foo']['bar']", "b" => "['foo']['man'][0]");
$foo = array ("a" => array ("bar" => "my value"));
var_dump ($foo['a']['bar']); //output: my value
我想要做的是将[' a'] [' bar']作为一个字符串,并且基本上创建一个包含密钥和值的新数组或位置。数值所在的数组。
$key = "['a']['bar']";
然后执行$x = $foo[$key];
并获得$ x ="我的价值"。
我意识到我已经在字符串中放了方括号,我在上面再做一遍,但我不确定如何将它写在字符串中。
答案 0 :(得分:0)
$lookup_table = array ("a" => "['foo']['bar']", "b" => "['foo']['man'][0]");
$foo = array ("a" => array ("bar" => "my value"), "b" => array("man" => array("blah")));
echo getValue($lookup_table, $foo);
echo "\n";
function getValue($lookup, $source)
{
foreach ($lookup as $k => $v)
{
$v = str_replace("'", "", $v);
$v = ltrim(rtrim($v, "]"), "[");
$values = explode("][", $v);
$data = $source[$k];
for ($i = 1; $i < count($values); $i++)
{
$data = $data[$values[$i]];
if($i == (count($values) - 1))
echo $k . " = " . $data . "\n";
}
}
}
输出:
a = my value
b = blah
我认为您不需要使用'
,因为您要声明密钥..因此函数可以将其用作int和字符串相同。
所以,基本上我做的是: 1.循环使用格式化数组的所有键。 2.跳过第一个,因为它是实际的变量名 3.循环直到我们达到最终值然后我们显示它。
顺便说一下,你真的想找到$foo
吗?如是。让我知道,我将编辑代码。