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);
}
我有 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);
}