Как скрыть субботу и воскресенье в массиве PHP

Я хочу скрыть субботу и воскресенье в 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.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
186
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать формат 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");
    }
}

Демо на 3v4l.org

Обновлять

Судя по комментариям ОП, дни, которые нужно включить, имеют $row[<dayname>] = 1. В этом случае вы можете использовать этот цикл foreach, используя формат l для получения полного названия дня недели и strtolower для преобразования в нижний регистр для использования в качестве индекса в $row:

foreach($daterange as $date){
    if ($row[strtolower($date->format('l'))]) {
        $array[] = $date->format("D Y-m-d");
    }
}

Демо на 3v4l.org

Спасибо за ваш ответ. В моем случае в mysql for есть на каждый день столбец. если столбец monday = 1 отображать понедельник; если вторник = 0, скрыть вторник. Не могли бы вы помочь мне решить эту проблему

fynn1307 21.12.2020 07:12

Итак, внутри $row у вас есть значения, например. $row['monday'] = 1, $row['tuesday'] = 0, ... и т.д.?

Nick 21.12.2020 07:13

Да, ты прав :)

fynn1307 21.12.2020 07:14

@ finn1307, пожалуйста, посмотрите мое редактирование; это должно делать то, что вы хотите

Nick 21.12.2020 07:18

Большое спасибо за Вашу помощь! Это сработало, я отметил ваш вопрос, это все, что я мог для вас сделать???

fynn1307 21.12.2020 07:20

@ finn1307 Рад это слышать. На вашем нынешнем уровне репутации принятие ответа — это все, что вы можете сделать (и этого достаточно). Как только вы наберете 15 повторений, вы сможете голосовать за ответы, а также принимать их.

Nick 21.12.2020 07:21

Другие вопросы по теме