2013-02-19 76 views
-1

好吧,我在這裏有一個奇怪的問題。我試圖計算舊的日期和新的日期。但是我發現了一個我無法解釋的問題。2日期時間正在編輯1

設置:
我今天有2個新日期。現在

$tempstamp = new DateTime(); 
$newstamp = new DateTime(); 

,我編輯newstamp到一個新的日期期運用:

if ($newstamp ->format('His') > 120000) $newstamp ->modify('+7 day'); 
else $newstamp ->modify('+4 day'); 

這完美的作品。但是現在出現了怪異的部分。 當我轉儲上述兩個值tempstamp給出了一個無法解釋的值之前和之後:

case '2': 
    $tempstamp = $newstamp; 

    dump($tempstamp->format('m-d')); // 02-19 - CORRECT 
    dump($newstamp->format('m-d')); // 02-19 - CORRECT 

    if ($newstamp->format('His') > 120000) $newstamp->modify('+7 day'); 
    else $newstamp->modify('+4 day'); 

    dump($tempstamp->format('m-d')); // 02-26 - FALSE 
    dump($newstamp->format('m-d')); // 02-26 - CORRECT 

*注:轉儲是我們var_dumping的方式*

問題:
有人能解釋爲什麼tempstamp也正在編輯,而我只編輯新郵票?

+1

因爲對象是通過引用在PHP分配。在'$ tempstamp = $ newstamp'之後,兩個變量都指向同一個對象。 http://php.net/manual/en/language.oop5.references.php – 2013-02-19 14:45:32

回答