2013-03-30 113 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-you-you-tried /) –

+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速度更快。 –