2012-01-26 2 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'; 

Update

Я не уверен, сколько уровней в массив будет иметь, поэтому я попытался использовать цикл 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 элемента, было бы проще просто жестко запрограммировать его!

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