这个函数通过引用获取$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分钟后没有找到任何解决方案。
如何制作数组的副本,该数组是通过引用传递的?
答案 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。