Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP::引用还是复制(内部大小写)?_Php_Reference - Fatal编程技术网

PHP::引用还是复制(内部大小写)?

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

如果变量引用或复制,请帮助我证明

案例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(){
      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所说的)。您的示例使用的是数组,而不是对象。