PHP碳-相互绑定的变量
在Laravel5.2控制器中使用PHP Carbon时,变量似乎相互绑定。因此,对其中一个的改变会影响其他人 PHP函数:PHP碳-相互绑定的变量,php,laravel,laravel-5.2,php-carbon,Php,Laravel,Laravel 5.2,Php Carbon,在Laravel5.2控制器中使用PHP Carbon时,变量似乎相互绑定。因此,对其中一个的改变会影响其他人 PHP函数: $now = Carbon::now(); var_dump($now); $from = $now; $from->startOfYear(); var_dump('-----------------------------------'); var_dump($now, $from); 结果: object(Carbon\Carbon)[225] p
$now = Carbon::now();
var_dump($now);
$from = $now;
$from->startOfYear();
var_dump('-----------------------------------');
var_dump($now, $from);
结果:
object(Carbon\Carbon)[225]
public 'date' => string '2016-02-13 21:55:36.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
string '-----------------------------------' (length=35)
object(Carbon\Carbon)[225]
public 'date' => string '2016-01-01 00:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
object(Carbon\Carbon)[225]
public 'date' => string '2016-01-01 00:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
将$from
设置为年初也影响了$now
,我看不出原因,搜索互联网对我没有任何帮助。在函数中,我需要根据其他碳日期访问和操作碳日期,因此我不能对碳日期的每个单独实例使用Carbon::now()
我如何解决这个问题?是什么原因造成的
更新
我无法回答为什么会发生这种情况,但我已经找到了一个暂时的解决办法,直到我能找到它的底部。从原始碳日期创建一个新的碳日期,转换为字符串。例如,$from=$new代码>变成$from=new Carbon($now->toDateTimeString())代码>。您也可以像往常一样访问方法
$from=(新碳($now->toDateTimeString())->startOfYear()代码>当您分配一个对象时,您分配了它的内存地址,因此基本上没有创建两个不同的碳对象,而是对同一对象进行了两次引用
而不是这个-
$from=$now代码>
使用-
$from=clone$now代码>
您还可以使用carboncopy()
方法,该方法基本上与您在“hack”中所做的相同-
$from=$now->copy()代码>