以下是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;我相信我将来会再次遇到这个问题所以我现在不会关闭这个问题。答案 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) ""
}
*/