Php 1正在编辑2个日期时间
好吧,我这里有个奇怪的问题。 我正在计算旧日期和新日期。然而,我发现了一个我无法解释的问题 设置:Php 1正在编辑2个日期时间,php,datetime,Php,Datetime,好吧,我这里有个奇怪的问题。 我正在计算旧日期和新日期。然而,我发现了一个我无法解释的问题 设置: 今天我有两个新的日期 $tempstamp = new DateTime(); $newstamp = new DateTime(); 现在,我使用以下命令将新闻标记编辑为新日期: if ($newstamp ->format('His') > 120000) $newstamp ->modify('+7 day'); else $newstamp ->modify('+
今天我有两个新的日期
$tempstamp = new DateTime();
$newstamp = new DateTime();
现在,我使用以下命令将新闻标记编辑为新日期:
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_转储方式*
问题:有人能解释为什么tempstamp也被编辑,而我只编辑newstamp吗?。所以
$tempstamp=$newstamp
正在使$tempstamp
和$newstamp
指向同一对象。要避免这种情况,您需要使用clone
:
$tempstamp=clone$newstamp代码>,因为在PHP中对象是通过引用分配的。在$tempstamp=$newstamp
之后,两个变量都指向同一个对象。