php - 2 DateTimes are getting editted by 1 -
ok got weird issue here. im trying calculate old date , new date. spotted issue unexplainable me.
the setup : have 2 new dates set on today.
$tempstamp = new datetime(); $newstamp = new datetime();
now, edit newstamp new date useing :
if ($newstamp ->format('his') > 120000) $newstamp ->modify('+7 day'); else $newstamp ->modify('+4 day');
which works perfectly. comes weird part. when dump both values before , after tempstamp gives unexplainable value :
case '2': $tempstamp = $newstamp; dump($tempstamp->format('m-d')); // 02-19 - right dump($newstamp->format('m-d')); // 02-19 - right if ($newstamp->format('his') > 120000) $newstamp->modify('+7 day'); else $newstamp->modify('+4 day'); dump($tempstamp->format('m-d')); // 02-26 - false dump($newstamp->format('m-d')); // 02-26 - right
*note: dump our way of var_dumping*
the question: can explain why tempstamp getting editted while edit newstamp?
php copies objects reference, not value. $tempstamp = $newstamp;
making $tempstamp
, $newstamp
point same object. avoid need utilize clone
:
$tempstamp = clone $newstamp;
php datetime
No comments:
Post a Comment