首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP::Reference还是copy (case or Case)?

PHP::Reference还是copy (case or Case)?
EN

Stack Overflow用户
提问于 2011-03-01 19:34:16
回答 4查看 117关注 0票数 0

请帮助我证明变量引用或复制的情况。

Case1 - $arr复制还是引用?:

代码语言:javascript
复制
class Ex1{
 public static $var1=array(10=>'work', 20=>'home'); 
}
$arr=Ex1::$var1;

Case2 - $arr复制还是引用?:

代码语言:javascript
复制
 class Ex1{
     protected static $var1=array(10=>'work', 20=>'home'); 
     public static function getArr(){
      return self::$var1;
       }
    }
    $arr=Ex1::getArr();

谢谢,Yosef

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-01 19:42:24

根据我的估计,它应该是一个复制品。

代码语言:javascript
复制
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);

给出

代码语言:javascript
复制
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)
票数 4
EN

Stack Overflow用户

发布于 2011-03-01 19:43:39

两个都收到。默认情况下,仅通过引用传输对象。

票数 2
EN

Stack Overflow用户

发布于 2011-03-01 19:37:29

修改$arr,然后修改var_dump(Ex1::getArr());,您将看到它是一个副本还是一个引用。

编辑:未看到Ex1::var1被保护

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5153939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档