簡體   English   中英

DateTime-> modify('+ 1 day')for循環更改另一個變量

[英]DateTime->modify('+1 day') on for loop changes another variable

$iDATEs更改為2019-08-11。 我想原因是$i=$iDATEs$i->modify('+1 day')

<?php
$iDATEs = DateTime::createFromFormat('d/m/Y H:i:s', $_POST['fDATEs'].' 00:00:00');//2019-08-01
$iDATEe = DateTime::createFromFormat('d/m/Y H:i:s', $_POST['fDATEe'].' 00:00:00');//2019-08-10
for ($i=$iDATEs; $i <= $iDATEe; $i=$i->modify('+1 day')) {
echo $i->format("Y-m-d").'<br>';
//It's show 2019-08-01 to 2019-08-10
}
echo $iDATEs->format("Y-m-d").'<br>';//It's changes $iDATEs to 2019-08-11. I guess the reason is $i=$iDATEs and $i->modify('+1 day')
echo $iDATEe->format("Y-m-d").'<br>';
?>

即使DateTimeDateTime modify()方法返回一個DateTime變量也可以進行鏈接,但是它修改了變量本身的值,但不會返回新實例。 對於更改對象的任何方法都是如此: addsub ...

您可以使用從不修改原始變量的DateTimeImmutable

$iDATEs = DateTimeImmutable::createFromFormat('d/m/Y H:i:s', $_POST['fDATEs'].' 00:00:00');
$iDATEe = DateTimeImmutable::createFromFormat('d/m/Y H:i:s', $_POST['fDATEe'].' 00:00:00');

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM