我使用此代码:
$source= (object) array('next'=>'hi', 'val'=>'bye');
$next= (object) array('val'=>'hello');
$source->next=$next;
var_dump($next->val); // <----------------------- outputs "hello"
$source->next->val = $source->val;
var_dump($next->val); // <----------------------- outputs "bye"
exit;
你能告诉我,为什么$next
变量输出不同的值(我的意思是,为什么它被触及了?我没有在那里使用$next = ....
声明?
答案 0 :(得分:2)
在这一行
$source->next=$next;
您正在分配地址,因此默认情况下,对象通过指向$source->next
的地址。
当您第一次var_dump($next->val)
- &gt;它的价值尚未改变,您只需将$next
分配给$source->next
。
但下一行你正在改变$source->next->val
的值,它指向$next
。因此,$next
变量的值将会发生变化。
我希望我很清楚,这对你有帮助。
答案 1 :(得分:0)
这里是你确实更改它的行,非常明确。
$source->next->val = $source->val;