PHP 日期减法仅适用于 Do While 循环的第一次迭代

PHP Date Subtract Only works first iteration of Do While Loop

我有 mySQL table 后缀为 'mmdd'。当我点击 table 时,我需要遍历并将此 'mmdd' 值存储在数组中。问题是 1 天的日期减法只适用于第一次迭代。我已经尝试了很多方法 - 作为我 class 等中的一个函数;但是,它只会减去第 1 天的时间。一定是更好的方法。

$i = 1;
$newday = array();
if ($current === 'Y') {
    $newday[0] = $datesplit[1];
    do {            
        $sqlstmt = "select * from dbname.mytable_".$newday[$i-1];
        $resultchk = $db->query($sqlstmt);
        $dtset = date($newday[$i-1]);
        $newday[$i] = date('md', strtotime($dtset.' -1 day'));
        $i++;           
    } while(mysqli_num_rows($resultchk) > 0);

如果要操作日期,通常使用 PHP 中的 DateTime class 会好很多。

假设 $datesplit[1] 包含类似 '0806' 的内容(8 月 6 日),我会将您的代码更改为如下内容:

$i = 0;
$newday = array();
$dtset = DateTime::createFromFormat('md', $datesplit[1]);
if ($current === 'Y') {
    do {      
        $newday[$i] = $dtset->format('md');      
        $sqlstmt = "select * from dbname.mytable_".$newday[$i];
        $resultchk = $db->query($sqlstmt);
        $dtset->sub(new DateInterval('P1D'));
        $i++;           
    } while(mysqli_num_rows($resultchk) > 0);
}