2015-05-09 114 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嗎?如是。讓我知道,我會編輯代碼。