PHP 赋值变量


PHP assigning variables

$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();