首页 > 解决方案 > 是什么让数组变量改变了它的值,即使它是由 val 分配的,而不是引用

问题描述

$a = array();
$var=array();
$a = array_fill(1, 3, '1');

test($a,$var);

$b = $a;

echo print_r($b).NL;

$a[2]='3';
echo print_r($b).NL;

function test(&$a,&$var){
    foreach($a as $i =>$v)
    {
       $var[$i]= &$a[$i];
    }

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

在数组 $b 中输出 3,即使它是由 val 复制的。看起来好像是在以某种方式$var[$i]= &$a[$i];做出这种行为,但正如您所见,地址被分配给 $var 而不是 $b。

标签: phparraysreference

解决方案


推荐阅读