分离数组中的引用

时间:2015-02-13 04:48:02

标签: php arrays reference

我在var_dump中有一个如下所示的数组:

array(2) {
  ["foo"] => &array(2) {
    ["hello"] => string(5) "world"
    ["number"] => float(21)
  }
  ["bar"] => &array(2) {
    ["hello"] => string(5) "world"
    ["number"] => float(21)
  }
}

在这个数组中,数组中的foobar键都引用了相同的数组,但我需要它们是独立的数组。

有没有办法删除数组中的所有引用?

注意:我的代码生成的实际数组很多比这更复杂,有许多层和引用。我宁愿不必通过数组来强制删除引用,但任何解决方案都比没有更好。

我试图改变我的代码生成它以修复引用的方式,但由于我正在使用的算法,它将无法工作。我可以修复它的唯一方法是重写我的整个生成器,以便不使用引用开头。 (我真的不想这样做)

1 个答案:

答案 0 :(得分:0)

我想不出一个简单的方法,所以这是我相当粗略的解决方案;简单地复制所有的东西:

function clone_array(array $arr)
{
    $res = [];
    foreach ($arr as $k => $v) {
        $res[$k] = is_array($v) ? clone_array($v) : $v;
    }
    return $res;
}