2015-07-24 3 views
1

Так что у меня массивы разной длиныДинамически добавить индексы к переменным

pathes= array(array('f1e9'), 
       array('c0d9', '0', 'form_values', '6e13') 
); 

Для каждого пути я хотел бы использовать каждое значение в качестве индекса для сканирования отдельного массива.

foreach ($pathes as $key => $val){ 

    $new_path = '$array_to_search'; 

    foreach ($val as $index){ 
     $newpath .= '[' . $index . ']'; 
    } 
} 

Таким образом, внутри цикла переменная $ new_path будет строка, которая выглядела так:

$new_path = '$array_to_search['f1e9']' 

и

$new_path = '$array_to_search['c0d9']['0']['form_values']['6e13']' 

Но тогда я должен был бы быть в состоянии оценить эту строку , и я не знаю, как это сделать.

Я думаю, что ответ может быть где-то в переменных переменных, но я не уверен, как это сделать.

Искренне благодарит за любую помощь. Очень благодарен!

ответ

0

Я думаю, что следующая рекурсивная функция будет решение здесь:

function getByPath($value, array $path) 
{ 
    if (empty($path)) return $value; 
    if (!is_array($value)) return; 
    if (array_key_exists($path[0], $value)) return getByPath($value[$path[0]], array_slice($path, 1)); 
} 
+0

спасибо! Я должен много добавить к этому, поскольку то, что я делаю, состоит из нескольких частей, но это, безусловно, должно привести меня к правильному пути. Очень признателен. – ambe5960

Смежные вопросы