在 php 中,如何在变量不执行增量运算的情况下将增量运算符与变量结合使用?
In php, how do I use an increment operator in combination with a variable without it performing an increment operation?
我有一个具体的日期 - 对于这个例子来说是 7 月 6 日。它属于 2016 年的第 27 周。
使用 PHP 5.5.9 我正在尝试 return 那一周发生的 7 个日期,使用以下函数:
function getStartAndEndDate($week, $year) {
$i=0;
$dto = new DateTime();
$ret[$i] = $dto->setISODate($year, $week)->format('Y-m-d');
$i++;
while ( $i < 7 ){
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
$i++;
}
return $ret;
}
我期待从 2016-07-04 到 2016-07-10 的 7 个连续日期的列表
相反,我收到以下日期:
2016-07-04, 2016-07-05, 2016-07-07, 2016-07-10 2016-07-14 2016-07-19, 2016-07-25
我相信以下行是我的问题的根源:
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
当我指定静态值时,代码有效。
如有任何建议或见解,我们将不胜感激。
谢谢
modify
方法实际上修改了 $dto
,因此在下一次迭代中,您不会处理与上一次迭代相同的 $dto
值。
所以,实际上这让您的任务变得更简单,因为您每次只需添加 1 天:
$ret[$i] = $dto->modify('+1 days')->format('Y-m-d');
在下面的行中,不使用 $i 而只使用 1。
你的线路是
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
使用
$ret[$i] = $dto->modify('+1 days')->format('Y-m-d');
原因是当您使用修改函数时,它会修改日期对象本身。因此,如果最初日期是 2016-07-04 ,通过使用 modify("+$i days") [$i=1] 它将 2016-07-05 但是当你在下一步中做 modify("+$ i days") [$i=2] 它将从 2016-07-05 开始计算,并给你 2016-07-07 并且这将继续。
我有一个具体的日期 - 对于这个例子来说是 7 月 6 日。它属于 2016 年的第 27 周。 使用 PHP 5.5.9 我正在尝试 return 那一周发生的 7 个日期,使用以下函数:
function getStartAndEndDate($week, $year) {
$i=0;
$dto = new DateTime();
$ret[$i] = $dto->setISODate($year, $week)->format('Y-m-d');
$i++;
while ( $i < 7 ){
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
$i++;
}
return $ret;
}
我期待从 2016-07-04 到 2016-07-10 的 7 个连续日期的列表
相反,我收到以下日期: 2016-07-04, 2016-07-05, 2016-07-07, 2016-07-10 2016-07-14 2016-07-19, 2016-07-25
我相信以下行是我的问题的根源:
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
当我指定静态值时,代码有效。
如有任何建议或见解,我们将不胜感激。
谢谢
modify
方法实际上修改了 $dto
,因此在下一次迭代中,您不会处理与上一次迭代相同的 $dto
值。
所以,实际上这让您的任务变得更简单,因为您每次只需添加 1 天:
$ret[$i] = $dto->modify('+1 days')->format('Y-m-d');
在下面的行中,不使用 $i 而只使用 1。
你的线路是
$ret[$i] = $dto->modify('+' . $i . ' days')->format('Y-m-d');
使用
$ret[$i] = $dto->modify('+1 days')->format('Y-m-d');
原因是当您使用修改函数时,它会修改日期对象本身。因此,如果最初日期是 2016-07-04 ,通过使用 modify("+$i days") [$i=1] 它将 2016-07-05 但是当你在下一步中做 modify("+$ i days") [$i=2] 它将从 2016-07-05 开始计算,并给你 2016-07-07 并且这将继续。