Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php在更改值时的奇怪行为_Php - Fatal编程技术网

php在更改值时的奇怪行为

php在更改值时的奇怪行为,php,Php,将此代码段用于缓冲事件 $temp = array(); while ($row = $source) { $temp[] = $row; // `add_day` means how many of next days add to buffer $d = new DateTime($row->date); for ($i = 0; $i < $row->add_day; $i++) { $d->modify('+1 da

将此代码段用于缓冲事件

$temp = array();

while ($row = $source)
{
  $temp[] = $row;

   // `add_day` means how many of next days add to buffer

   $d = new DateTime($row->date);

   for ($i = 0; $i < $row->add_day; $i++)
   {
      $d->modify('+1 day');          

      $row->date = $d->format('Y-m-d');

      $temp[] = $row;

      // print_r($row) --> It's OK. `date` has proper value.
   }
}
结果:

$temp[0] = { date: '2015-07-03'} 
$temp[1] = { date: '2015-07-03'}
$temp[2] = { date: '2015-07-03'}  

我犯错误的地方???

您一直在覆盖对象中该日期的值。由于该数组具有相同的值,因此它们都返回相同的值

for ($i = 0; $i < $row->add_day; $i++) { $d->modify('+1 day'); // Here you keep updating your object to have the new date $row->date = $d->format('Y-m-d'); $temp[] = $row; } 对于($i=0;$i<$row->add_day;$i++) { $d->修改(“+1天”); //在这里,您不断更新对象以获得新日期 $row->date=$d->格式('Y-m-d'); $temp[]=$row; } 这些对象是解决此问题的一种方法:

for ($i = 0; $i < $row->add_day; $i++) { $d->modify('+1 day'); $tempObj = clone $row; $tempObj->date = $d->format('Y-m-d'); $temp[] = $tempObj; } 对于($i=0;$i<$row->add_day;$i++) { $d->修改(“+1天”); $tempObj=克隆$row; $tempObj->date=$d->format('Y-m-d'); $temp[]=$tempObj; } for ($i = 0; $i < $row->add_day; $i++) { $d->modify('+1 day'); $tempObj = clone $row; $tempObj->date = $d->format('Y-m-d'); $temp[] = $tempObj; }