2013-03-30 2 views
0

У меня проблема, которую я не могу исправить. У меня есть 2 массива и строка. Первый массив содержит ключи, которые должен использовать второй. Первый из них, как это:PHP массив к массиву деревьев

Array 
(
    [0] => foo 
    [1] => bar 
    [2] => hello 
) 

Теперь мне нужен PHP код, который преобразует его на второй массив:

Array 
(
    [foo] => Array 
     (
      [bar] => Array 
       (
        [hello] => MyString 
       ) 
     ) 
) 

Количество элементов является переменной.

Может кто-нибудь рассказать мне, как это сделать?

+2

(HTTP: // mattgemmell. com/2008/12/08/what-have-you-try /) –

+2

Прогулка по массиву назад ;-) – Havelock

ответ

3

Вы должны использовать ссылки, чтобы решить эту проблему:

$a = array (0 => 'foo', 1 => 'bar', 2 => 'hello'); 

$b = array(); 
$ptr = &$b; 
foreach ($a as $val) { 
    $ptr[$val] = Array(); 
    $ptr = &$ptr[$val]; 
} 
$ptr = 'MyString'; 
var_dump($b); 
+0

Спасибо! Проблема заключалась в том, что я не знал об использовании &. –

+0

@WietsedeVries добро пожаловать. –

2

Все, что вам нужно: [? Что вы пробовали]

$path = array(
     0 => 'foo', 
     1 => 'bar', 
     2 => 'hello' 
); 

$data = array(); 
$t = &$data; 
foreach ($path as $key) { 
    $t = &$t[$key]; 
} 
$t = "MyString"; 
unset($t); 

print_r($data); 

See Live Demo

+0

Спасибо, но Netme была немного быстрее. –

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