这是对象的代码:
$a = new stdClass();
$a->value = 'key';
$array[] = $a;
$array[] = $a;
$a->value = 'key2';
$array[] = $a;
print_r($array);
这是数组的代码
$a = array("value" => "key");
$array[] = $a;
$array[] = $a;
$a['value'] = 'key2';
$array[] = $a;
print_r($array);
对象输出:
Array
(
[0] => stdClass Object
(
[value] => key2
)
[1] => stdClass Object
(
[value] => key2
)
[2] => stdClass Object
(
[value] => key2
)
)
数组的输出:
Array
(
[0] => Array
(
[value] => key
)
[1] => Array
(
[value] => key
)
[2] => Array
(
[value] => key2
)
)
当$a
是对象时,它会将$array
中已有的值更新为key2
,但当$a
是数组时,它只更新最后一个值。如何让对象像数组一样运行,只更新最后一个值?
谢谢。
答案 0 :(得分:2)
PHP对象自动passed by reference,因此如果您更新最后一个,它将更新所有内容。所以只需使用clone
来克隆你的对象,例如
$array[] = clone $a;
//^^^^^ See here