2017-08-14 41 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原始日期不會改變。