PHP中的对象(数组)变量

PHP中的对象(数组)变量,php,arrays,variables,object,Php,Arrays,Variables,Object,代码如下: $obj = new stdClass; $obj->AAA = "aaa"; $obj->BBB = "bbb"; $arr = array($obj, $obj); print_r($arr); $arr[1]->AAA = "bbb"; $arr[1]->BBB = "aaa"; print_r($arr); 以下是输出: Array ( [0] => stdClass Object ( [

代码如下:

$obj = new stdClass;
$obj->AAA = "aaa";
$obj->BBB = "bbb";

$arr = array($obj, $obj);

print_r($arr);

$arr[1]->AAA = "bbb";
$arr[1]->BBB = "aaa";

print_r($arr);
以下是输出:

Array
(
    [0] => stdClass Object
        (
            [AAA] => aaa
            [BBB] => bbb
        )

    [1] => stdClass Object
        (
            [AAA] => aaa
            [BBB] => bbb
        )

)

Array
(
    [0] => stdClass Object
        (
            [AAA] => bbb
            [BBB] => aaa
        )

    [1] => stdClass Object
        (
            [AAA] => bbb
            [BBB] => aaa
        )

)
有人能给我解释一下为什么所有的对象变量(数组中的)都改变了吗


对不起,我的英语不好。我不是以英语为母语的人。

数组存储对同一对象的两个引用,而不是两个不同的对象,如下所示:

array( 0 => ---| stdClass |-------> [AAA] => bbb 1 => ---| [BBB] => aaa )
您需要创建该类的新实例

$obj2 = new stdClass;
$obj2->AAA = "bbb";
$obj2->BBB = "aaa";

$arr = array($obj, $obj2);
否则,数组包含指向同一对象的2个指针。update语句更改基础对象

$obj2 = new stdClass;
$obj2->AAA = "bbb";
$obj2->BBB = "aaa";

$arr = array($obj, $obj2);