2014-08-16 3 views
1

У вас есть идея, как строка может быть преобразована в переменную, например.Разделить строку на ключи ассоциативных массивов (PHP)

  • есть строка ->$string = 'one|two|three';
  • есть массив ->$arr = array('one' => array('two' => array('three' => 'WELCOME')));

Я хочу использовать все с взрываться(); взорванные значения для доступа к массиву $arr. Я попробовал этот код:

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

echo $$str; 

он не работает, к сожалению :(Любые идеи

+0

Я забыл сказать, что nu mber ключей не является статическим –

+0

нет, я не хочу вставлять какие-либо значения, я хочу их прочитать. Массив уже существует –

ответ

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)); 
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 
Смежные вопросы