如何在PHP中将对象的副本推送到数组中

chu*_*byk 7 php arrays

我试图在PHP中将对象添加到数组中,但它没有用,尝试了2种方法:

#1

$obj->var1 = 'string1';
$obj->var2 = 'string1';
$arr[] = $obj;
$obj->var1 = 'string2';
$obj->var2 = 'string2';
$arr[] = $obj;
Run Code Online (Sandbox Code Playgroud)

#2

$obj->var1 = 'string1';
$obj->var2 = 'string1';
array_push($arr,$obj);
$obj->var1 = 'string2';
$obj->var2 = 'string2';
array_push($arr,$obj);
Run Code Online (Sandbox Code Playgroud)

两种方法都会将最新的对象添加到整个数组中.似乎该对象通过引用添加到数组中.有没有办法按值将它们添加到数组中?

Dec*_*cko 12

在PHP 5或更高版本中,对象始终通过引用传递.如果需要副本,可以使用克隆运算符

$obj = new MyClass;
$arr[] = clone $obj;
Run Code Online (Sandbox Code Playgroud)