Я хочу скрыть субботу и воскресенье в PHP.
Я построил следующий код:
$begin = new DateTime($row['date']);
$end = new DateTime($row['dateul']);
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
$array[] = $date->format("Y-m-d");
}
Пока здесь код работает, но он выводит полную неделю/дни в этом диапазоне дат. Я нашел этот код:
if (strcasecmp($daterange, 'Sun') != 0
&& strcasecmp($daterange, 'Sat') != 0){
}
Я правильно понимаю, что если значение = 1, например, будет выводиться суббота?
Потому что основная идея заключалась в следующем: если день, например, воскресенье = 0, скройте его в массиве, если воскресенье = 1, покажите его в массиве. Значения поступают из MySQL.
Вы можете использовать формат N
для DateTime::format, чтобы проверить день недели, он возвращает 6 для субботы и 7 для воскресенья, поэтому, если значение меньше 6, добавьте его в массив:
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$array = array();
foreach($daterange as $date){
if ($date->format('N') < 6) {
$array[] = $date->format("Y-m-d");
}
}
Обновлять
Судя по комментариям ОП, дни, которые нужно включить, имеют $row[<dayname>] = 1
. В этом случае вы можете использовать этот цикл foreach, используя формат l
для получения полного названия дня недели и strtolower
для преобразования в нижний регистр для использования в качестве индекса в $row
:
foreach($daterange as $date){
if ($row[strtolower($date->format('l'))]) {
$array[] = $date->format("D Y-m-d");
}
}
Итак, внутри $row
у вас есть значения, например. $row['monday'] = 1, $row['tuesday'] = 0, ...
и т.д.?
Да, ты прав :)
@ finn1307, пожалуйста, посмотрите мое редактирование; это должно делать то, что вы хотите
Большое спасибо за Вашу помощь! Это сработало, я отметил ваш вопрос, это все, что я мог для вас сделать???
@ finn1307 Рад это слышать. На вашем нынешнем уровне репутации принятие ответа — это все, что вы можете сделать (и этого достаточно). Как только вы наберете 15 повторений, вы сможете голосовать за ответы, а также принимать их.
Спасибо за ваш ответ. В моем случае в mysql for есть на каждый день столбец. если столбец monday = 1 отображать понедельник; если вторник = 0, скрыть вторник. Не могли бы вы помочь мне решить эту проблему