2011-01-23 45 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