2016-11-10 4 views
0

されています以下のようなD = $この - 今日$の変数を設定する:私はこのような$ dを変更したときPHPオブジェクトは、Iのような炭素を使用して現在の日付を格納するオブジェクトが参照として変数に格納されているよりもむしろ値

namespace Events; 

use Carbon\Carbon; 

class EventsData extends Events { 

    public $monthsNames = [ 
    "1" => "January", 
    "2" => "February", 
    "3" => "March", 
    "4" => "April", 
    "5" => "May", 
    "6" => "June", 
    "7" => "July", 
    "8" => "August", 
    "9" => "September", 
    "10" => "October", 
    "11" => "November", 
    "12" => "December" 
    ]; 
    public function next_12_months() { 
    $next_12_months = []; 
    $d = $this->today; 

    array_push($next_12_months, $d->month); 
    for ($i = 0; $i <= ($this->monthRange - 1); $i++) { 
     $d = $d->addMonths(1); 
     if ($this->today != $d) { 
     array_push($next_12_months, $d->year); 
     } 
     var_dump($$this->today); //is being modified along with $d 
     var_dump($d); 
     $next_month = $d->month; 
     array_push($next_12_months, $next_month); 
    } 

    return $next_12_months; 
    } 
} 

問題は$ D-> addMonthsは、(1)、それは>の$ this - と思われていること今日も変更されています。

これを防ぐにはどうすればよいですか?

+0

'next_12_months'メソッドではなく' addMonths'メソッドを表示すると便利だったかもしれません – RiggsFolly

答えて

1

クローンオブジェクト

$d = clone $this->today; 

hereのクローニングの詳細。

+0

クローンキーワードなしでこれが起こっていない理由について詳しく説明しますか? リファレンスを渡すには、アンパサンドを追加する必要があるという印象を受けました。 $ d =&$ this-> today – Philip

関連する問題