将字符串用于多维数组键

时间:2015-05-09 18:54:30

标签: php multidimensional-array

$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 ="我的价值"。

我意识到我已经在字符串中放了方括号,我在上面再做一遍,但我不确定如何将它写在字符串中。

1 个答案:

答案 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吗?如是。让我知道,我将编辑代码。