PHP::引用还是复制(内部大小写)?
如果变量引用或复制,请帮助我证明 案例1-$arr副本或参考?:PHP::引用还是复制(内部大小写)?,php,reference,Php,Reference,如果变量引用或复制,请帮助我证明 案例1-$arr副本或参考?: class Ex1{ public static $var1=array(10=>'work', 20=>'home'); } $arr=Ex1::$var1; class Ex1{ protected static $var1=array(10=>'work', 20=>'home'); public static function getArr(){ retur
class Ex1{
public static $var1=array(10=>'work', 20=>'home');
}
$arr=Ex1::$var1;
class Ex1{
protected static $var1=array(10=>'work', 20=>'home');
public static function getArr(){
return self::$var1;
}
}
$arr=Ex1::getArr();
案例2-$arr副本或参考?:
class Ex1{
public static $var1=array(10=>'work', 20=>'home');
}
$arr=Ex1::$var1;
class Ex1{
protected static $var1=array(10=>'work', 20=>'home');
public static function getArr(){
return self::$var1;
}
}
$arr=Ex1::getArr();
谢谢,
Yosef修改
$arr
,然后修改变量转储(Ex1::getArr())代码>然后您将看到它是副本还是引用
编辑:没有看到Ex1::var1受到了保护据我估计,它应该是一个副本
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);
给予
两份都是。默认情况下,仅通过引用传输对象。它将是一个副本,请按如下方式进行测试:
$arr=Ex1::$var1;
$arr['omg'] = 'lol';
var_dump($arr);
var_dump(Ex1::$var1);
什么?请再解释一下好吗?@Yosef-如果你需要证据,试着运行我的示例代码,相信你的眼睛所显示的(对副本的更改不会影响原件的价值,反之亦然)。。。如果您需要数学级的证明,那么最好阅读PHP的实际源代码,或者询问PHP的实际开发人员(并查看他们对您的请求的响应)。但你为什么需要这个证据呢?物体也被当作copy@Yosef-对象不同。对象不是副本,而是引用(这正是tobyS所说的)。您的示例使用的是数组,而不是对象。