$start = $this->getWeekRange($date);
$end = $start->modify("+6 days");
echo $start->format("Y-m-d");
echo $end->format("Y-m-d");
exit();
输出:
2013-12-08
2013-12-08
它应该是
2013-12-02
2013-12-08
为什么$start和$end具有相同的值? 即使我已经在 $start 变量上分配了值,然后再修改它并将其分配给$end。
对象在 PHP(和许多其他语言(中通过引用分配。
这意味着$end
和$start
指向同一对象。为了获得该对象的克隆,您必须使用clone
:
$end = clone $start;
现在您在$end
中有一个单独的对象,它具有与$start
相同的属性;直到您调用方法或修改其中一个方法。
对于您的示例,您应该将上述行放在示例的第二行并修改此行:
$end = $start->modify("+6 days");
自:
$end->modify("+6 days");
试试这个:
$start = $this->getWeekRange($date);
$end = $start;
$end->modify("+6 days");
echo $start->format("Y-m-d");
echo $end->format("Y-m-d");
exit();