2015-07-21 45 views
3

因此,我可以推對象的參考成使用陣列&不印字對象引用到數組

$a = (object) array('a' => 1); 
$b[]='test'; 
$b[] = &$a; 
$a->b = 2; 
var_dump($b); 

結果:

array (size=2) 
    0 => string 'test' (length=4) 
    1 => & 
    object(stdClass)[2] 
     public 'a' => int 1 
     public 'b' => int 2 

但如何能我「推」的參考到起動的數組?

我試圖

array_unshift($b, &$a); 

但我得到Fatal error: Call-time pass-by-reference has been removed

回答

5

因爲它是一個對象,$a已經(在某種程度上)本身就是一個參考*。你並不需要在所有&引用涉足:

array_unshift($b, $a); 

*的對象是獨一無二的,在轉讓不被複制。對象的更改將在所有共享該對象的變量中可見。

+0

我現在有一個更好的理解。 'array_push'具有相同的效果,我認爲這比'$ b [] =&$ a'更可取 – andrew