Php 当我不碰那个东西时,为什么它会变?
我使用以下代码:Php 当我不碰那个东西时,为什么它会变?,php,arrays,object,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
$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;
$source=(object)数组('next'=>'hi','val'=>'bye');
$next=(对象)数组('val'=>'hello');
$source->next=$next;
变量转储($next->val);//next->val=$source->val;
变量转储($next->val);// 这是一行,你确实改变了它,而且非常明确
$source->next->val = $source->val;
在这条线上
$source->next=$next;
您正在分配地址,所以对象在默认情况下是指向$source->next
的传递地址
当您第一次var\u dump($next->val)
->其值尚未更改时,您只需将$next
分配给$source->next
但下一行您正在更改$source->next->val
的值,它指向$next
。因此,$next
变量处的值将得到更改
我希望我说的很清楚,这将对您有所帮助。是的,我不知道默认情况下,对象是通过地址传递的。。。我以为它被分配给了单独的变量。。