Bonjour,
J'ai un bout de code qui me permet de mettre dans un tableau une série d'objet \Datetime.
Par contre je viens de me rendre compte que passer le même objet fait qu'il est passé dans ce tableau par référence, ce qui ne me semble pas être le comportement normal.
Voici mon code
le debug donne ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $lundi = new \DateTime(); $semaine = $lundi->format('W'); $annee = $lundi->format('Y'); $lundi->setISOdate($annee, $semaine); $dateTableau = array(); $dateTableau[0] = $lundi; for ($i = 1; $i < 7; $i++) { $lundi->add(new \DateInterval('P1D')); $dateTableau[$i] = $lundi; } \Maitrepylos\Debug::dump($dateTableau);
On voit bien que c'est la dernier traitement qui est passé dans l'ensemble des objet de mon tableau.array(7) {
[0] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[1] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[2] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[3] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[4] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[5] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[6] => object(DateTime)#17 (3) {
["date"] => string(19) "2012-07-01 14:58:57"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
}
Maintenant si je clone, j’obtiens bien le résultat attendu, mais cela me semble bizare.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $dateTableau[0] = clone $lundi; for ($i = 1; $i < 7; $i++) { $lundi->add(new \DateInterval('P1D')); $dateTableau[$i] = clone $lundi; }Suis-je dans l'erreur ?array(7) {
[0] => object(DateTime)#30 (3) {
["date"] => string(19) "2012-06-25 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[1] => object(DateTime)#26 (3) {
["date"] => string(19) "2012-06-26 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[2] => object(DateTime)#32 (3) {
["date"] => string(19) "2012-06-27 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[3] => object(DateTime)#33 (3) {
["date"] => string(19) "2012-06-28 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[4] => object(DateTime)#34 (3) {
["date"] => string(19) "2012-06-29 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[5] => object(DateTime)#35 (3) {
["date"] => string(19) "2012-06-30 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
[6] => object(DateTime)#36 (3) {
["date"] => string(19) "2012-07-01 15:01:25"
["timezone_type"] => int(3)
["timezone"] => string(3) "UTC"
}
}
Partager