克隆通过引用传递的数组

时间:2016-12-15 10:35:41

标签: php arrays

这个函数通过引用获取$feedback参数并对其进行修改:

private function removeEmptyAnswers(&$feedback)
{
    //Do stuff with $feedback
}

我想在$feedback更改之前复制一份,以便记录它:

private function removeEmptyAnswers(&$feedback)
{
    $feedbackCopy = $feedback;
    //Do stuff with $feedback
    MyLog::write(['before' => $feedbackCopy, 'after' => $feedback]);
}

如果$feedback按值传递,这将是花生,但它是通过引用传递的,这意味着我的$feedbackCopy也会被更改..或者不是?

奇怪的是,在谷歌搜索30分钟后没有找到任何解决方案。

如何制作数组的副本,该数组是通过引用传递的?

1 个答案:

答案 0 :(得分:3)

将数组分配给另一个变量就足够了。

$original = [1, 2, 3];
function meh (&$arr) { $copy = $arr; $copy[0] = 'meh'; }
meh($original);
var_dump($original); // unchanged

function meh1(&$arr) { $arr[0] = 'meh'; }
meh1($original);
var_dump($original); // changed

正如您所见,在这种情况下,原始数组不会更改。但是,如果您更改参数,则会按预期更改它。

另请参阅this question,了解更多信息,请参阅AnthonyB