PHP如何在不更新以前的值的情况下为对象分配新值

PHP如何在不更新以前的值的情况下为对象分配新值,php,arrays,object,Php,Arrays,Object,这是对象的代码: $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; prin

这是对象的代码:

$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
是一个数组时,它只更新最后一个值。如何使对象的行为类似于数组,并且只更新最后一个值


谢谢。

PHP对象是自动更新的,因此如果您更新最后一个对象,它将更新所有内容。因此,只需使用,即可克隆您的对象,例如

$array[] = clone $a;
         //^^^^^ See here
可能重复的