假设我有这段代码:
$val = 1;
$arr = Array();
$arr['val'] =& $val;
$val = 2;
echo $arr['val'];
这将打印出2,因为$val被引用传递给了$arr。
我的问题是:如果我通过引用将一个值传递给数组,是否有办法稍后删除该引用,使它成为一个简单的复制值? 更明确地说,我想要这样的东西: $val = 1; $arr = Array(); $arr['val'] =& $val; $arr['val'] = clone $arr['val']; // 或者更好的方法: $arr = clone $arr; $val = 2; echo $arr['val'];
这应该打印出1(因为在引用变量改变之前,数组已经被克隆了)。 然而,clone不适用于数组,它只适用于对象。
有什么想法吗?我真的不知道该怎么做。我尝试编写一个递归复制函数,但那没用。
这将打印出2,因为$val被引用传递给了$arr。
我的问题是:如果我通过引用将一个值传递给数组,是否有办法稍后删除该引用,使它成为一个简单的复制值? 更明确地说,我想要这样的东西: $val = 1; $arr = Array(); $arr['val'] =& $val; $arr['val'] = clone $arr['val']; // 或者更好的方法: $arr = clone $arr; $val = 2; echo $arr['val'];
这应该打印出1(因为在引用变量改变之前,数组已经被克隆了)。 然而,clone不适用于数组,它只适用于对象。
有什么想法吗?我真的不知道该怎么做。我尝试编写一个递归复制函数,但那没用。