更改变量的值会影响另一个变量

时间:2011-08-22 21:02:54

标签: php datetime object reference

大家。我是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 个答案:

答案 0 :(得分:4)

$t1$t2只是对象的引用。执行$t1 = $t2时,您只是复制引用,而不是对象。

你可以改为$t1 = clone $t2

答案 1 :(得分:0)

你应该使用

$t2 = clone $t1;

答案 2 :(得分:0)

您导致$ t2指向$ t1。所以编辑$ t2会导致你编辑$ t1的内存。

使用克隆代替:$ t2 = clone $ t1