如果变量引用或复制,请帮助我证明这个案例。
案例1 - $ arr复制或引用?:
class Ex1{
public static $var1=array(10=>'work', 20=>'home');
}
$arr=Ex1::$var1;
案例2 - $ arr复制或引用?:
class Ex1{
protected static $var1=array(10=>'work', 20=>'home');
public static function getArr(){
return self::$var1;
}
}
$arr=Ex1::getArr();
谢谢, 约瑟夫
答案 0 :(得分:4)
根据我的估算,它应该是副本。
class Ex1{
public static $var1=array(10=>'work', 20=>'home');
}
$arr=Ex1::$var1;
var_dump($arr);
$arr[15] = 'play';
var_dump($arr);
$arr2=Ex1::$var1;
var_dump($arr2);
Ex1::$var1 = array(10=>'work', 15=>'asylum', 20=>'home');
$arr3=Ex1::$var1;
var_dump($arr3);
var_dump($arr2);
给出
array
10 => string 'work' (length=4)
20 => string 'home' (length=4)
array
10 => string 'work' (length=4)
20 => string 'home' (length=4)
15 => string 'play' (length=4)
array
10 => string 'work' (length=4)
20 => string 'home' (length=4)
array
10 => string 'work' (length=4)
15 => string 'asylum' (length=6)
20 => string 'home' (length=4)
array
10 => string 'work' (length=4)
20 => string 'home' (length=4)
答案 1 :(得分:2)
两个副本。默认情况下,只有对象通过引用传输。
答案 2 :(得分:1)
修改$arr
,然后修改var_dump(Ex1::getArr());
,您将看到它是副本还是引用。
编辑:没有看到Ex1 :: var1受到保护
答案 3 :(得分:0)
这将是一个副本,测试它:
$arr=Ex1::$var1;
$arr['omg'] = 'lol';
var_dump($arr);
var_dump(Ex1::$var1);