变量引用范围

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 一样?


吃鸡游戏
浏览 81回答 2
2回答

慕的地6264312

使用引用参数是不够的。您需要将您设置$this->o为对以下内容的实际引用$o:$this->o = &$o;

慕桂英546537

将值传递给变量时,必须在构造函数中指定对参数的引用。function __construct(&$o) {  $this->o = &$o;}输出:echo json_encode($a->o);  // { "hello": "world", "foo": 1 }echo json_encode($o);  // { "hello": "world", "foo":1 }
打开App,查看更多内容
随时随地看视频慕课网APP