2017-08-14 44 views
0

我不知道如何命名这个问题。 所以,我有一个类有一些属性,如$date。 接下来,在我的方法中,我制作了一个循环,并进行了一些计算,并且在每次迭代中,我都会使用$date->modify('+1 month'); 因此,如果开始日期为01/01/2000,则在24次迭代之后,该日期变为01/01/2002。 但是在这个循环之后,我必须调用另一个开始日期的方法(未修改),但$ this - > $ date给了我一个01/01/2002的修改日期。 我试图实现类似以下内容:在for循环之后进行comeBack修改,如$date->modify("$duration * -1 . 'months' ");,但在某些特定情况下,因为项目已经很复杂,所以会返回+ - 1个月的差异。如何定义一个将保存变量值的'const'?

于是,我尝试了该方法的开始,使水木清华这样的:

$newArray = []; 
array_push($newArray,$this->date); 

但无论如何,它给了我一个修改日期:/

如何使地方一个变量,保存开始日期,以便从任何地方访问此日期?

像,从一个变量定义一个常量,然后在任何地方使用它?

+1

你可以发布课程吗? – IsThisJavascript

+0

你可以使用['clone'](http://php.net/manual/en/language.oop5.cloning.php)复制原始的'date'对象。像这样,'$ orig_date = clone $ date;' – Himal

+0

使用DateTimeImmutable - 任何修改都会返回一个修改后的副本,而不会影响原始 – iainn

回答

0

如果你需要保留原文,你应该克隆它而不是修改它。然后,您可以在循环中向克隆添加几个月。现在

$iterationDate = clone $date; 

当你改变你的$iterationDate原始日期不会改变。