class A { public $o; function __construct(&$o) { $this->o = $o; } function set($v) { $this->o["foo"] = $v; }}$o = ["hello" => "world"];$a = new A($o);$a->set(1);echo json_encode($a->o) // { "hello": "world", "foo": 1 }echo json_encode($o) // { "hello": "world" }我必須怎么做才能讓輸出 #2 像輸出 #1 一樣?
2 回答

慕的地6264312
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用引用參數(shù)是不夠的。您需要將您設(shè)置$this->o
為對(duì)以下內(nèi)容的實(shí)際引用$o
:
$this->o = &$o;

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
將值傳遞給變量時(shí),必須在構(gòu)造函數(shù)中指定對(duì)參數(shù)的引用。
function __construct(&$o) {
$this->o = &$o;
}
輸出:
echo json_encode($a->o); // { "hello": "world", "foo": 1 }
echo json_encode($o); // { "hello": "world", "foo":1 }
- 2 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)
0/150
提交
取消