PHP - 为什么在我的代码中通过引用复制DateTime对象?

Dan*_*boy 5 php datetime

为什么在这段代码中我的DateTime对象被引用复制似乎?
这是我的代码:

<?php

date_default_timezone_set('UTC');

$dt1 = new \DateTime('2015-03-15');
$dt2 = $dt1;
$dt2 = $dt2->modify('-1 year');

echo $dt1->format('c') . PHP_EOL;
echo $dt2->format('c');

?>
Run Code Online (Sandbox Code Playgroud)

我在期待:

2015-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
Run Code Online (Sandbox Code Playgroud)

但我得到了这个:

2014-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
Run Code Online (Sandbox Code Playgroud)

Pan*_*ins 6

这是因为这条线

$dt2 = $dt1;
Run Code Online (Sandbox Code Playgroud)

变量被复制,对象被引用.

有关示例的答案,请参阅此处 - /sf/answers/438004241/

您应该能够使用克隆修复此问题

  • 是的,但"变量"和"对象"并不是不同的东西.你应该说值/原始类型和对象(如你提到的答案中所写) (4认同)
  • 而不只是说"不是非常精确"可能更有助于解释*为什么*蝙蝠? (3认同)