2011-08-22 109 views
1

每个人。我是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的价值,这是不是我想要的。请你告诉我为什么会发生这种情况,以及如何避免这种情况。谢谢。

伊恩

+0

因为它们是相同的值:'$ T2 = $ t1' – dmon

回答

4

$t1$t2只是引用的对象。当你做$t1 = $t2时,你只是复制引用,而不是对象。您可以改为$t1 = clone $t2

+0

谢谢你,我想尽可能多。虽然不知道该怎么做。 – magicbacon

0

您应该使用

$t2 = clone $t1; 
0

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

使用克隆来代替:$ T2 =克隆$ T1

+0

两者都是对同一对象的引用,但编辑$ t2不会更改$ t1,它只会更改对象$ t1指向的对象:) – arnaud576875

相关问题