2013-03-09 3 views
0

Je dois admettre que toute la confusion sur le "passage par référence" de PHP m'a affecté et maintenant je ne suis pas clair. J'aurais pensé que le code suivant:Passer une référence à un tableau privé

class TestClass { 

    private $my_precious = array ('one','two','three'); 

    public function &give_reference() { 
     return $this->my_precious; 
    } 

} 

$foobar = new TestClass(); 
$my_ref = $foobar->give_reference(); 
$my_ref = array ("four", "five", "six"); 

echo print_r($foobar,true); 

imprimerait:

TestClass Object 
(
    [my_precious:TestClass:private] => Array 
     (
      [0] => four 
      [1] => five 
      [2] => six 
     ) 

) 

mais hélas, ma référence semble avoir aucun pouvoir rester et à la place que l'écho de:

TestClass Object 
(
    [my_precious:TestClass:private] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

) 

Comment puis-je faire ce travail?

Répondre

2

Vous devez attribuer par référence ainsi:

$my_ref =& $foobar->give_reference(); 
0

Essayez:

class TestClass { 

    private $my_precious = array ('one','two','three'); 

    public function & give_reference() { 
     return $this->my_precious; 
    } 

} 

$foobar = new TestClass(); 
$my_ref = & $foobar->give_reference(); 
$my_ref = array ("four", "five", "six"); 

echo print_r($foobar,true); 
Questions connexes