Изменение значения переменной влияет на другую переменную - PullRequest
1 голос
/ 23 августа 2011

все.Я новичок в PHP.У меня возникла эта проблема с DateTime:

  $t1 = new DateTime();
  $t1->setTime(9, 30);
  $t2 = $t1;
  $t2->add (new DateInterval('PT10M'));
  echo $t1->format('H:i'); # outputs 9:40

Как видите, изменив значение $t2, я также изменил значение $t1, а это не то, что мне нужно.Подскажите, пожалуйста, почему это происходит и как этого избежать.Спасибо.

Ян

Ответы [ 3 ]

4 голосов
/ 23 августа 2011

$t1 и $t2 являются просто ссылкой на объект. Когда вы делаете $t1 = $t2, вы просто копируете ссылку, а не объект.

Вместо этого вы можете $t1 = clone $t2.

0 голосов
/ 23 августа 2011

Вы заставляете $ t2 указывать на $ t1.Таким образом, редактирование $ t2 заставляет вас редактировать память $ t1.

Вместо этого используйте клон: $ t2 = clone $ t1

0 голосов
/ 23 августа 2011

Вы должны использовать

$t2 = clone $t1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...