2011-01-23 55 views
0
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] 

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

回答

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是否复制阵列和阵列的返回时,它的内容是什么?

但从程序员的角度来看,它的工作原理就好像返回将复制的价值,通过引用返回时除外。就实现而言,只要对脚本的行为没有影响,就可以避免发生这种情况的优化。

+0

+1很好措辞。 – NikiC 2011-01-23 09:13:27