У меня есть цикл foreach, и мне нужно добавить условия даты для дополнительных дат начала и истечения срока действия.
Я использую это, поскольку мне нужно настроить расписание, но я не могу запустить его.
$thedate = date("Y-m-d H:i:s");
foreach ( $getframe as $frame ){
if(isset($frame['dateexpire']) && $frame['dateexpire'] <= $thedate || $frame['dateexpire'] == NULL
|| isset($frame['datestart']) && $frame['datestart'] >= $thedate || $frame['datestart'] == NULL ) {
// get the frames
}
}
$frames['datestart']
а также $frames['dateexpire']
либо NULL, либо установлены в моей таблице как метки времени.
Таким образом, если либо начальная дата имеет значение NULL или БОЛЬШЕ, чем текущая дата, либо дата истечения имеет значение NULL или LESS, чем текущая дата, должен появиться фрейм.
Я думаю, что я поступаю об этом совершенно неправильно, может кто-нибудь пролить свет на правильный подход
Ваша ошибка в том, что вы сравнивали временные метки ($frames['datestart']
а также $frames['dateexpire']
) в строку ($thedate = date("Y-m-d H:i:s");
).
Вот исправленная версия с некоторыми дополнительными улучшениями.
$today = time();
foreach ( $getframe as $frame ){
if (is_null($frame['datestart']) || is_null($frame['dateexpire']) || $frame['datestart'] > $today || $frame['dateexpire'] < $today)
// get the frames
}
}
$today
также, это имеет смысл.is_null()
проверить на нулевые значенияДругих решений пока нет …