Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 1正在编辑2个日期时间_Php_Datetime - Fatal编程技术网

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
之后,两个变量都指向同一个对象。