2011-08-22 155 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

相關問題