2012-01-26 106 views
1

是否有可能採取的值的數組,例如:大廈陣列鑰匙鏈

$index = array('0' => '1', '1' => '4', '2' => '7'); 

,並使用此爲$update['1']['4']['7']位置更新另一個陣列的位置?

我想也許我可以做類似下面的(但似乎我不能)...

for($build_key=0;$build_key<3; $build_key++){ 
    $this_key .= "[".$index[$build_key]."]"; 
} 
$update.$this_key = 'new data in'; 

更新

我不知道有多少水平數組將會有,這就是爲什麼我試圖使用for循環(我已經把'3'放在for循環中,但也許我應該使用count($ index)來代替。

回答

1

這樣?

$x = $index[0]; 
$y = $index[1]; 
$z = $index[2]; 

$update[$x][$y][$z] = 'new data in'; 

這將任意長度陣列工作:

$index = array('0' => '1', '1' => '4', '2' => '7'); 
$where = &$update; 

foreach ($index as $key => $value) 
    $where = &$where[$value];  

$where = 'new data in'; 
+0

類似的東西,但我不知道數組有多深 - 它可能是3個級別,它可能是10 – MrJ

+0

請參閱我的編輯以瞭解如何對任意數量的維度執行此操作。 –

+0

不錯的一個......謝謝! – MrJ

1

相反追加的字符串,你可以只保留到當前數組引用你看:

$target =& $update; 

for($build_key=0; $build_key < 3; $build_key++){ 
$target =& $target[$index[$build_key]]; 
} 

$target = 'new data'; 

當然如果$index總是要3個元素長,那麼只需要硬編碼就容易了!