$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。
答案 0 :(得分:2)
通过PHP(以及许多其他语言)引用来分配对象。
这意味着$end
和$start
指向同一个对象。要获得该对象的克隆,您必须使用clone
:
$end = clone $start;
现在,$end
中有一个单独的对象,其属性与$start
相同; 直到你调用方法或修改其中一个。
对于您的示例,您应将上面的行放在示例的第二行并修改此行:
$end = $start->modify("+6 days");
为:
$end->modify("+6 days");
答案 1 :(得分:0)
试试这个:
$start = $this->getWeekRange($date);
$end = $start;
$end->modify("+6 days");
echo $start->format("Y-m-d");
echo $end->format("Y-m-d");
exit();