为什么要更改所有变量。
如何避免我的变量不改变其值
在我的控制器中
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = $inicio;
$otro = $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
我的观点:
<p><b>Inicio: </b> {{$inicio}}</p>
<p><b>Fin: </b> {{$fin}}</p>
<p><b>Otro: </b> {{$otro}}</p>
结果
问题出在哪里?
答案 0 :(得分:1)
这是因为碳物体是可变的。
尝试克隆它们。
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $inicio; // not sure why you need this
$fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
答案 1 :(得分:1)
制作时$fin=$inicio;
$fin
始终会引用$inicio
,这意味着如果$inicio
更改$fin
会同时发生变化,那么这就是对象工作这是面向对象的世界。
试试这个:
public function show()
{
$inicio = Carbon::createFromFormat('Y-m-d H:i:s',"2016-02-04 11:00:00");
$fin = clone $inicio;
$otro = clone $fin->addHours(1);
return view('horas',array('inicio'=>$inicio,'otro'=>$otro,'fin'=>$fin));
}
答案 2 :(得分:0)
您应该更改为以下内容:
$fin = $inicio->copy();
$otro = $fin->copy()->addHours(1);