您是否有想法,如何将字符串转换为变量,例如
$string = 'one|two|three';
$arr = array('one' => array('two' => array('three' => 'WELCOME')));
我想全部使用explode();用于访问数组$arr
的爆炸值。我试过这段代码:
$c = explode('|', $string);
$str = 'arr[' . implode('][', $c) . ']';
echo $$str;
它不起作用,可悲的是:(任何想法?
答案 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));