-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也正在編輯,而我只編輯新郵票?
因爲對象是通過引用在PHP分配。在'$ tempstamp = $ newstamp'之後,兩個變量都指向同一個對象。 http://php.net/manual/en/language.oop5.references.php – 2013-02-19 14:45:32