Как я могу узнать, свободен ли кто-то в определенные дни? - PullRequest
0 голосов
/ 27 мая 2020

Я делаю сайт, на котором вы можете зарезервировать места, но для определенных мест там должен быть кто-то. Ранее я задавал вопрос, как посчитать, сколько людей доступно в определенные дни, например: в понедельник доступны 2 человека. Но теперь я хочу, чтобы если в определенный c день недели доступен хотя бы 1 человек, вы получите сообщение о том, что там кто-то есть.

Но мой код этого не делает, он продолжает говорить, что есть кто-то, даже если его нет. Мой код здесь:

if(array_sum([$totalMonday, $totalTuesday, $totalWednesday, $totalThursday, $totalFriday]) > 0){
      echo 'someone is available';
} else{
      echo 'no one is available';
}

$ totalMonday, $ totalThursday, et c. указаны ранее в коде, и они учитываются всякий раз, когда кто-то доступен, например:

echo '<b>Monday: </b>';
if(!empty($presentie["workMonday"])) {
      ++$totalMonday;
      echo $presentie["workMonday"];;
} else{
      echo 'not available';
}

Так что я не знаю, что делаю не так, если что-то неясно, скажите, пожалуйста, мне сложно объяснить, что не так. Заранее спасибо

1 Ответ

0 голосов
/ 27 мая 2020

Во-первых, я предполагаю, что у вас есть несколько одинаковых операторов if / else, соответствующих тому, что есть во втором фрагменте кода. Мы можем очистить их, добавив в ваш код дополнительный l oop. Я также покажу вам, как использовать массив вместо создания отдельной переменной для каждого дня.

Выше l oop создайте массив, где каждый ключ соответствует дню недели. (Замените все объявления переменных $total{DAY} = 0; этим)

$days = [
    'Monday' => 0,
    'Tuesday' => 0,
    'Wednesday' => 0,
    'Thursday' => 0,
    'Friday' => 0
];

Теперь мы можем заменить операторы if / else, которые использовались для увеличения переменных $total{DAY}. Замените ВСЕ эти операторы if / else следующим образом:

foreach(array_keys($days) as $day) {
    echo '<b>{$day}: </b>';
    if(!empty($presentie["work{$day}"])) {
          ++$days[$day];
          echo $presentie["work{$day}"];;
    } else{
          echo 'not available';
    }
}

Эти 9 строк кода делают то же самое, что и предыдущие ~ 35 строк кода.


Теперь, на ваш актуальный вопрос. Вы сказали в комментарии, что вывод, который вы запрашиваете в своем вопросе, - это « ... на той же странице и перед l oop». Это проблема, потому что ваш l oop - это то, что увеличивает эти значения, нет возможности получить к ним доступ до l oop. Вам нужно будет поставить после l oop. Вот как это сделать после l oop:

//replace with the name of your date select element]
$date = $_POST['date'];

//using `date()`, get the day of the week of the selected date. (Monday-Friday)
$day_of_week = date('l', strtotime($date));

if($days[$day_of_week] > 0) {
    echo $days[$day_of_week] . " people available.";
} else {
    echo "Not Available";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...