我拥有的是:
<?php
$keys = array('a', 'b', 'c', ..., ...);
$value = 'blah';
?>
我想要实现的目标是:
<?php
$someArr['a']['b']['c'][...][...] = $value;
?>
实现这一目标最明智的方法是什么?
//编辑
我不知道$ key中有多少元素,这就是我在那里添加点的原因
答案 0 :(得分:1)
这要求递归:
<?php
function array_md_push($keys, &$pushto, $value) {
if ($keys == array()) { // no keys left - put value
$pushto = $value;
} else { // keys left - recursion!
$key = array_shift($keys); // take the first element
array_md_push($keys, $pushto[$key], $value); // call with one key less
}
}
$keys = array('a', 'b', 'c');
$value = 'blah';
$pushto = array();
array_md_push($keys, $pushto, $value);
var_dump($pushto);
结果:
array(1) { ["a"]=> array(1) { ["b"]=> array(1) { ["c"]=> string(4) "blah" } } }
array_md_push()
将键作为第一个参数,将数值推送到第二个数组,将值作为第三个参数。如果keys数组为空,则只将值存储在要推送到的数组中。如果没有,它会调用自己,只需一个密钥,$pushto
扩展到该密钥。