php参考与价值

时间:2011-01-23 07:07:26

标签: php

  class Test {
      private $arr;
      function __construct() {
          $this->arr = array('test');
      }

      function getArr() {
          return $this->arr;
      }
  }
  $a = new Test();
  $b = $a->getArr();
  $b[0][0] = 'a';
  $s = $a->getArr(); 
  echo $s[0]

为什么这个回声测试而不是aest?返回时,PHP是否复制数组和数组的内容?如何获得一个数组,我可以在其中更改字符串并将其反映在对象中?

1 个答案:

答案 0 :(得分:5)

通过引用返回和分配:

class Test {
    //...
    function &getArr() {
        return $this->arr;
    }
}
$a = new Test();
$b =& $a->getArr();
$b[0][0] = 'a';
$s = $a->getArr(); 
echo $s[0];
  

PHP在返回时是否复制数组和数组内容?

从程序员的角度来看,它的工作方式就好像返回会复制值,除非通过引用返回。在实现方面,有一些优化可以避免这种情况发生,只要它对脚本的行为没有影响。