【发布时间】:2011-09-18 23:01:54
【问题描述】:
$first = array("a", "b" => array("c", "d" => array("e", "f")), "g", "h" => array("f"));
$second = array("b", "d", "f");
$string = "foobar";
鉴于上述代码,我如何在$second 中定义的索引处将$first 中的值设置为$string 的内容?意思是,对于这个例子,它应该是$first["b"]["d"]["f"] = $string;,但$second 和$first 的内容可以是任意长度。 $second 将始终是一维的。这是我尝试过的方法,但似乎没有按计划工作:
$key = "";
$ptr = $first;
for($i = 0; $i < count($second); $i++)
{
$ptr &= $ptr[$second[$i]];
$key = key($ptr);
}
$first[$key] = $string;
这将执行$first["f"] = $string; 而不是正确的多维索引。我原以为使用key 会找到数组中的位置,包括它已经向下移动的级别。
如何动态访问正确的键?如果维数是静态的,我可以做到这一点。
编辑:另外,我想要一种不使用 eval 的方法。
【问题讨论】:
标签: php multidimensional-array