将字符串拆分为关联数组的键(PHP)

时间:2014-08-16 20:01:26

标签: php arrays multidimensional-array

您是否有想法,如何将字符串转换为变量,例如

  • 有一个字符串 - > $string = 'one|two|three';
  • 有一个数组 - > $arr = array('one' => array('two' => array('three' => 'WELCOME')));

我想全部使用explode();用于访问数组$arr的爆炸值。我试过这段代码:

$c = explode('|', $string);
$str = 'arr[' . implode('][', $c) . ']';

echo $$str;

它不起作用,可悲的是:(任何想法?

2 个答案:

答案 0 :(得分:1)

你做错了。
您可以通过循环执行所需的操作,逐级执行数组级别

$string = 'one|two|three';
$arr = array('one' => array('two' => array('three' => 'WELCOME')));

$c = explode('|', $string);
$result = $arr;

foreach($c as $key)
    $result = $result[$key];

echo $result; // WELCOME

答案 1 :(得分:0)

这是一种递归函数:

$ex_keys = array('one', 'two', 'three');
$ex_arr = array('one' => array('two' => array('three' => 'WELCOME')));

function get_recursive_var($keys, $arr) {
    if (sizeof($keys) == 1)
        return $arr[$keys[0]];
    else {
        $key = array_shift($keys);
        return get_recursive_var($keys, $arr[$key]);
    }
}

var_dump(get_recursive_var($ex_keys, $ex_arr));