PHP分配变量

时间:2013-12-07 12:02:17

标签: php zend-framework

$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。

2 个答案:

答案 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();