PHP 复制没有引用的数组

PHP copy array without references

当我复制带有引用的 PHP 数组时,副本已经包含来自原始数组的引用

$arr = [1,2,3];
print_r($arr); echo"<br>";    
$x = &$arr[1];
$arr2 = $arr;
print_r($arr); print_r($arr2); echo"<br>";
$x = 8;
print_r($arr); print_r($arr2); echo"<br>";

结果:

Array ( [0] => 1 [1] => 2 [2] => 3 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) 
Array ( [0] => 1 [1] => 8 [2] => 3 ) Array ( [0] => 1 [1] => 8 [2] => 3 ) 

如何复制数组,使其与原始引用保持一致?

Array ( [0] => 1 [1] => 2 [2] => 3 ) 
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 ) 
Array ( [0] => 1 [1] => 8 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 )

如果您的问题在您问题的第一条评论中使用 重复 link 得到解决(在我写这篇文章时得到其他 4 人的支持)。请删除您的问题,以便 SO 可以减少重复的问题/不必要的膨胀。

否则,只需声明原始数组的静态副本以供将来使用。

$arr = [1,2,3];
$copy=$arr;  // preserve the original
print_r($arr); echo"<br>";    
$x = &$arr[1];
$arr2 = $arr;
print_r($arr); print_r($arr2); echo"<br>";
$x = 8;
print_r($arr); print_r($copy); echo"<br>";