将值设置为嵌套数组子元素

时间:2014-04-24 11:29:31

标签: php arrays

好的,所以这就是我要做的事情:

  • 我们说我们有一系列数组(数组) - 我们不知道有多少嵌套数组
  • 我们给予要设置的元素的路径(=索引)。
  • 和值

那可行吗?

示例

让我们说:putValueAtPosition($arr, "someValue",array(3,5,8));将设置$arr[3][5][8] = "someValue"并返回结果数组(完整集)。

欢迎任何想法/意见?


PS 我正在处理一个完全不同的问题(但具有相同的核心概念),甚至在PHP中都没有(尽管不是很重要 - PHP很清楚足以让我们明白这一点!;-)),我已经尝试了各种过于复杂的事物,包括递归函数和通过引用传递(或者没有),我的脑袋即将爆炸......

1 个答案:

答案 0 :(得分:3)

function putValueAtPosition(&$arr, $val , $path){
    $marker=&$arr;
    foreach($path as $p){
        $marker=&$marker[$p];
    }
    $marker=$val;
}


$test=array(
    1=>array(
        1=>array(
            1=>'cat',
            2=>'hello'
        ),
        2=>'hello'
    ),
    2=>'hello'

);

print_r($test);
putValueAtPosition($test, 'changed', array(1,1,1));
print_r($test);