-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