2015-05-09 207 views
1
$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

你想为键分配值,就像你在foreach循环中做的那样?这么多还是其他什么? –

+0

@anantkumarsingh当我做$ x = $ foo [$ lookup_table [$ a]]时,我想要$ x =“我的价值”;但我不能像我一样使用数组键作为 – user983223

+0

您的预期输出是什么。写入你的代码。你的问题不会清除我。并且请根据您最初显示的数组输出您的输出,而不是像$ x ='my vale'那样? –

回答

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