【发布时间】:2015-04-07 19:10:06
【问题描述】:
请有人告诉我我在代码中犯的错误,如下所示:
$arrayOfDays = array();
for($dayIterator=$from; $dayIterator < $to; $dayIterator->modify('+1 day')){
$arrayOfDays[] = $dayIterator;
}
print_r($arrayOfDays);
打印出这样的结果:
Array ( [0] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [1] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [2] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [3] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [4] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [5] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [6] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [7] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [8] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [9] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [10] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [11] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [12] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [13] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [14] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [15] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [16] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [17] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [18] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [19] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [20] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [21] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [22] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [23] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [24] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [25] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [26] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [27] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) [28] => DateTime Object ( [date] => 2015-04-30 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris ) )
其中 $from 设置为月初,$to 设置为月底。 当我在循环中打印 $dayIterator 时,它给了我正确的日期,但是在完成整个数组后,最后一天就被填满了!! 我不知道为什么它会这样工作:(
【问题讨论】:
-
$from 和 $to 值是什么样的?
-
只是提示:PHP 对象是通过引用传递的。所以你保存对对象的引用 30 次;)你可以通过保存一个克隆来解决它
标签: php arrays loops while-loop