PHP Date Subtract Only работает первая итерация цикла Do While

У меня есть таблицы MySQL с суффиксом «mmdd». Мне нужно перебрать и сохранить это значение ‘mmdd’ в массиве, когда я получаю удар по таблице. Проблема в том, что вычитание даты за 1 день работает только на 1-й итерации. Я пробовал это многими способами — как функция в моем классе и т.д .; но это только вычитает день 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);

1

Решение

Как правило, гораздо лучше использовать DateTime класс в PHP, если вы хотите манипулировать датами.

При условии, что $datesplit[1] содержит что-то вроде '0806' (на 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]