Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我不碰那个东西时,为什么它会变?_Php_Arrays_Object - Fatal编程技术网

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
变量处的值将得到更改


我希望我说的很清楚,这将对您有所帮助。

是的,我不知道默认情况下,对象是通过地址传递的。。。我以为它被分配给了单独的变量。。