How to push a copy of an object into array in PHP How to push a copy of an object into array in PHP arrays arrays

How to push a copy of an object into array in PHP


Objects are always passed by reference in php 5 or later. If you want a copy, you can use the clone operator

$obj = new MyClass;$arr[] = clone $obj;


You have to first clone the object before making modifications:

$obj->var1 = 'string1';$obj->var2 = 'string1';$arr[] = $obj;$obj = clone $obj; // Clone the object$obj->var1 = 'string2';$obj->var2 = 'string2';$arr[] = $obj;


In PHP 5, objects are passed by reference unless you specifically say otherwise.

Here, you probably want to clone the object when you add it to the array:

$obj->var1 = 'string1';$obj->var2 = 'string1';$arr[] = clone $obj;$obj->var1 = 'string2';$obj->var2 = 'string2';$arr[] = clone $obj;

See the manual.