当我不接触时,为什么对象会改变?

时间:2017-03-22 09:36:19

标签: php arrays object

我使用此代码:

$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 = ....声明?

2 个答案:

答案 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;