Клонирование смешанной структуры из массивов и объектов
Чтобы быть уверенным, что сложный объект полностью скопирован по значению, и что содержащиеся в нем обекты не переданны по ссылке, можно использовать такую функцию.
function clone_arrray_obj ($obj)
{
$result = $obj;
if (is_object($obj) || is_array($obj))
{
if (is_object($obj))
{
$result = clone $obj;
if(count($result))
{
foreach ($result as $i => $value)
{
$result->$i = clone_arrray_obj($result->$i);
}
}
}
else
{
if(count($result))
{
foreach ($result as $i => $value)
{
$result[$i] = clone_arrray_obj($result[$i]);
}
}
}
}
return $result;
}