构建数组密钥链

时间:2012-01-26 14:15:27

标签: php arrays

是否可以获取值数组,例如:

$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循环的原因(我在for循环中放了'3',但也许我应该使用count($索引)而不是。

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分:1)

您可以只保留对您正在查看的当前数组的引用,而不是附加字符串:

$target =& $update;

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

$target = 'new data';

当然,如果$index总是长达3个元素,那么硬编码会更容易!