Datetime naar functie sturen

Status
Niet open voor verdere reacties.

Manu2016

Gebruiker
Lid geworden
27 sep 2016
Berichten
7
Ik heb een datetime en ik stuur die naar een functie. In die functie wordt deze datetime aangepast. Als ik terugkom uit de functie is de originele datetime gewijzigd. Hoe kan dat?

PHP:
$SessionDate = new DateTime("2016-11-01");
  function GetKalData($InDate)
  {
    $LastDate = clone $InDate;
    $LastDate->modify('last day of this month');
    while ($InDate <= $LastDate)
    {
...
      $InDate->modify('+1 day');
    }
  }
  GetKalData($SessionDate);
 /* hier is $SessionDate 01/12/2016 */
 
Bedoel je het formaat of de daadwerkelijke datum?
Het lijkt me dat je datum 1 dagje verschoven wordt door:

PHP:
$InDate->modify('+1 day');
 
De datum wordt verschoven in de functie, maar ik verwacht niet dat de datum buiten de functie ook is aangepast.

Het gaat dus niet over het formaat.
 
Voor zover ik het zie (of ik moet je verkeerd begrijpen :) ), lijkt het erop alsof hij alleen maar 1 dagje wordt verschoven.
En dat gebeurt in je functie.
2016-11-01 + 1 dag = 2016-12-01 ofwel 01/12/2016.
Dit klopt dan toch?
 
Laatst bewerkt:
Het klopt dat de datum IN de functie gewijzigd is, maar de originele datum die wordt doorgestuurd naar de functie mag toch niet wijzigen.

Dat $InDate wijzigt OK, maar dat $SessionDate is gewijzigd dat snap ik niet.
 
Wil je een copy in plaats van een clone by reference dan kan dit eventueel als "oplossing"
Code:
GetKalData( unserialize(serialize($SessionDate)) );
echo ("SessionDate na de functie: " . $SessionDate->format('Y-m-d') );
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan