PHP动态访问关联数组

时间:2014-12-17 18:31:25

标签: php associative-array variable-variables

来自原始的,只有1次访问

如果我有一个包含x个数组的数组,每个形式都是

array('country' => array('city' => array('postcode' => value)))

和另一个可能是

的数组
array('country', 'city', 'postcode') or array('country', 'city') 

取决于我需要检索的内容,如何使用第二个数组来识别第一个数组中的索引级别,然后访问它。

3 个答案:

答案 0 :(得分:0)

通过使用$cur = &$cur[$v];嵌套引用,您可以读取和修改原始值:
ide1上的实例:http://ideone.com/xtmrr8

$array = array('x' => array('y' => array('z' => 20)));
$keys = array('x', 'y', 'z');

// Start nesting new keys
$cur = &$array;
foreach($keys as $v){
    $cur = &$cur[$v];
}

echo $cur;  // prints 20
$cur = 30;  // modify $array['x']['y']['z']

答案 1 :(得分:0)

遍历索引数组,逐步沿着初始数组向下移动,直到到达索引数组的末尾。

$array1 = array('x' => array('y' => array('z' => 20)));
$keys = array('x', 'y', 'z');
$array_data = &$array1;
foreach($keys as $key){
    $array_data = &$array_data[$key];
}
echo $array_data;

答案 2 :(得分:0)

好的,我为最初没有更清楚地表达我的问题而道歉,但是我得到了它,因为我希望用变量变量,如下:

$keystring = '';
foreach ($keys as $key) {
  $keystring .= "['$key']";
}

然后迭代主数组,为其中的每个国家/地区条目,并访问所需的值:

eval('$value = $entry' . "$keystring;");