Как вы явно создаете копию переменной в PHP?
У меня есть массив объектов stdClass. Когда я назначаю его переменной, она не копирует переменную, а ссылается на исходную переменную. Мой код выглядит следующим образом:
for ( $i = 0, $len = count($rows); $i < $len; $i++ )
{
$row = $rows[$i];
echo $rows[$i]->games;
$row->games = 'test';
echo $rows[$i]->games;
}
Первое эхо выводит нормальное значение, а второе эхо выдает "тест". Даже если я устанавливаю свойство на $row
(который должен быть скопирован), он фактически устанавливает его в исходном элементе массива.
Почему это и как я могу создать копию, так что изменение копии не изменяет оригинал?
Ответы
Ответ 1
Используйте ключевое слово clone
.
$copy = clone $object;
Важно отметить:
Когда объект клонируется, PHP 5 выполняет мелкую копию всех свойств объекта. Любые свойства, которые являются ссылками на другие переменные, останутся ссылками.
он поставляется с хорошим магическим методом:
Как только клонирование будет завершено, если будет определен метод __clone(), тогда будет вызван метод созданного объекта __clone(), чтобы разрешить любые необходимые свойства, которые необходимо изменить.