Sunday, 15 January 2012

php - 2 DateTimes are getting editted by 1 -



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