我在var_dump
中有一个如下所示的数组:
array(2) {
["foo"] => &array(2) {
["hello"] => string(5) "world"
["number"] => float(21)
}
["bar"] => &array(2) {
["hello"] => string(5) "world"
["number"] => float(21)
}
}
在这个数组中,数组中的foo
和bar
键都引用了相同的数组,但我需要它们是独立的数组。
有没有办法删除数组中的所有引用?
注意:我的代码生成的实际数组很多比这更复杂,有许多层和引用。我宁愿不必通过数组来强制删除引用,但任何解决方案都比没有更好。
我试图改变我的代码生成它以修复引用的方式,但由于我正在使用的算法,它将无法工作。我可以修复它的唯一方法是重写我的整个生成器,以便不使用引用开头。 (我真的不想这样做)
答案 0 :(得分:0)
我想不出一个简单的方法,所以这是我相当粗略的解决方案;简单地复制所有的东西:
function clone_array(array $arr)
{
$res = [];
foreach ($arr as $k => $v) {
$res[$k] = is_array($v) ? clone_array($v) : $v;
}
return $res;
}