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);