по состоянию на PHP 5 Переменная объекта PHP содержит ссылку или идентификатор на фактическую переменную.Вот пример, чтобы продемонстрировать это.
class test{
public $test = 1;
}
$obj1 = new test;
$orginal = [$obj1,array(2),3];
$copy = $orginal;
echo 'orginal array';
var_dump($orginal);
echo 'copy of orginal';
var_dump($copy);
//after changing
$copy[0]->test = 'changed';
$copy[1][0] = 'changed';
$copy[3] = 'changed';
echo 'orginal array after changing its copy';
var_dump($original);
echo 'copy of orginal after changing';
var_dump($copy);
вывод для этого
original array
array (size=3)
0 =>
object(test)[38]
public 'test' => int 1
1 =>
array (size=1)
0 => int 2
2 => int 3
copy of original
array (size=3)
0 =>
object(test)[38]
public 'test' => int 1
1 =>
array (size=1)
0 => int 2
2 => int 3
original array after changing its copy
array (size=3)
0 =>
object(test)[38]
public 'test' => string 'changed' (length=7)
1 =>
array (size=1)
0 => int 2
2 => int 3
copy of original after changing
array (size=3)
0 =>
object(test)[38]
public 'test' => string 'changed' (length=7)
1 =>
array (size=1)
0 => string 'changed' (length=7)
2 => string 'changed' (length=7)
, когда объект в копии изменяется, тогда оригинальный объект также изменяется, но массив ипеременная остается неизменной, поскольку они передаются как значения.
дополнительная информация о ссылке на объект: Объекты и ссылка