多级数组赋值

时间:2015-02-28 12:17:55

标签: php arrays multidimensional-array

以下是PHP数组表示的示例

array(
 "test1" => array(
             "test1subtest1" => array(..)
            ),
 "test2" => array(
             "test2subtest1" => array(..)
            )
 )

所以,问题在于:PHP中是否有任何工具可用于为具有随机深度索引名称的多维数组赋值?它假设看起来像这样:

$valuetoassing = "TESTVALUE";
$testarray     = array();
array_assign_multidimensional($testarray, $valuetoassing, array("test1", "test1subtest1", "test1subtest1subtest1"));

问题是我不知道数组的深度,所以我无法编码。索引名称也在运行时生成。

编辑:我认为我的特殊情况可以使用某种链表解决(存储为包含实际数据的项目的数组和指向下一个元素索引的指针),但我和#39;我相信我将来会再次遇到这个问题所以我现在不会关闭这个问题。

1 个答案:

答案 0 :(得分:0)

使用references这很容易。

function array_assign_multidimensional(&$input_array, $value, $list){
        $assignee = &$input_array;
        foreach($list as $key){
                $assignee = &$assignee[$key];
        }
        $assignee = $value;
}


$input = array(
        'firstLayer' => array(
                'secondLayer' => array(
                        'test' => 'old'
                )
        ),
        'randomOutlyingValue' => ''
);

array_assign_multidimensional($input, 'new', array('firstLayer', 'secondLayer', 'test'));

var_dump($input);

/*
array(2) {
  ["firstLayer"]=>
  array(1) {
    ["secondLayer"]=>
    array(1) {
      ["test"]=>
      string(3) "new"
    }
  }
  ["randomOutlyingValue"]=>
  string(0) ""
}
*/