第一代碼,然後這樣的問題:類成員參照PHP另一個目的
class MyArray
{
private $arrayRef;
function __construct(&$array){
$this->arrayRef = $array;
}
function addElement($newElement){
$this->arrayRef[] = $newElement;
}
function print(){
print_r($this->arrayRef);
}
}
$array = ['first', 'second'];
$arrayObject = new MyArray($array);
$arrayObject->addElement('third');
print_r($array); // prints array containing 2 elements
echo '<br/>';
$arrayObject->print(); // prints array containing 3 elements
類構件$數組引用,在該示例並不作爲對構造提供的另一陣列的參考工作。構造函數中的參數是通過引用傳遞的,但我想這不會使成員$ arrayRef也是對該數組的引用。
爲什麼不這樣工作,以及如何使它工作?
如果你仍然沒有明白我的意思:首先print_r打印包含2個元素的數組,甚至認爲它可能包含3. 當我通過addElement()傳遞第三個元素到$ arrayObject時,我也希望它添加到我傳遞給類的構造函數的$數組中。
是的,你的構造函數通過引用獲取一個值,但它在行上產生一個本地副本:'$ this-> arrayRef = $ array;'。該類的其餘部分正在處理實例化對象的副本('this-> arrayRef'),而不是原始的'$ array'。你想要一個'全局'變量嗎? – WillardSolutions
我希望成員$ arrayRef是一個對構造函數中傳遞的數組的引用,以便對$ arrayRef所做的任何更改也作出傳遞數組 – Scarass