Я пытаюсь создать небольшую программу для создания плана планировщика Итак, пользователь выбирает:
- один или несколько дней (например: выбор понедельника, вторника и пятницы) и часов в день
- Введите starDate
- Введите endDate
- Введите totaHours
После этого будет сгенерирован план sheduler
Из чего i прямо сейчас, я застрял в foreach, потому что он генерирует план на все дни
function isTuesday($date) {
return date('w', strtotime($date)) === '2';
}
function isWednesday($date) {
return date('w', strtotime($date)) === '3';
}
foreach(range(0,365) as $day) {
$internal_date = date(INTERNAL_FORMAT, strtotime("{$start_date} + {$day} days"));
$this_day = date(DISPLAY_DAY_FORMAT, strtotime($internal_date));
$this_month = date(INTERNAL_FORMAT, strtotime($internal_date));
if ((isTuesday($internal_date) || isWednesday($internal_date))
&& !isExcludedDate($internal_date)) {
$months_and_dates[$this_month][] = $this_day;
}
}
Он генерирует все даты от A до B, каждый вторник и среду, предположим, я использую оператор if для проверить, выбраны ли все дни недели? если понедельник, вызывайте функцию понедельника, только если понедельник и вторник, понедельник и вторник функцию. Если я буду следовать этому, у меня будет больше 30, если охватить все возможности, в любом случае сделать это короче? * ОБНОВЛЕНИЕ 1
Если я использую if, то только в понедельник у меня есть все это
foreach(range(0,$datediff) as $day) {
$internal_date = date(INTERNAL_FORMAT, strtotime("{$startDate} + {$day} days"));
$this_day = date(DISPLAY_DAY_FORMAT, strtotime($internal_date));
$this_month = date(INTERNAL_FORMAT, strtotime($internal_date));
if($isSegunda != null ){
if ((isSegunda($internal_date)) && !isExcludedDate($internal_date)) {
$cronograma[$this_month][] = $this_day;
}
}
if($isSegunda != null && $isTerca != null){
if ((isSegunda($internal_date)) || isTerca($internal_date) && !isExcludedDate($internal_date)) {
$cronograma[$this_month][] = $this_day;
}
}
if($isSegunda != null && $isTerca != null && $isQuarta != null){
if ((isSegunda($internal_date)) || isTerca($internal_date) || isQuarta($internal_date) && !isExcludedDate($internal_date)) {
$cronograma[$this_month][] = $this_day;
}
}
if($isSegunda != null && $isTerca != null && $isQuarta != null && $isQuinta != null){
if ((isSegunda($internal_date)) || isTerca($internal_date) || isQuarta($internal_date) || isQuinta($internal_date) && !isExcludedDate($internal_date)) {
$cronograma[$this_month][] = $this_day;
}
}
if($isSegunda != null && $isTerca != null && $isQuarta != null && $isQuinta != null && $isSexta !=null){
if ((isSegunda($internal_date)) || isTerca($internal_date) || isQuarta($internal_date) || isQuinta($internal_date) || isSexta($internal_date) && !isExcludedDate($internal_date)) {
$cronograma[$this_month][] = $this_day;
}
}
}