猿问

我如何查看某人在特定日期何时有空?

我正在制作一个网站,您可以在其中预订位置,但对于某些位置,需要有人在那里。前面问了一个问题,如何统计某天有多少人有空,比如:周一有2个人有空。但现在我希望,如果在一周中的特定一天至少有 1 个人有空,你会收到一条消息,说有人在那里。


但我的代码没有这样做,它一直说有人可用,即使没有。我的代码在这里:


if(array_sum([$totalMonday, $totalTuesday, $totalWednesday, $totalThursday, $totalFriday]) > 0){

      echo 'someone is available';

} else{

      echo 'no one is available';

}

$ totalMonday、$totalThursday 等在代码的前面指定,只要有人有空,它们就会计数,例如:


echo '<b>Monday: </b>';

if(!empty($presentie["workMonday"])) {

      ++$totalMonday;

      echo $presentie["workMonday"];;

} else{

      echo 'not available';

}

所以我不知道我做错了什么,如果不清楚,请告诉我,我很难解释哪里出了问题。提前致谢


Helenr
浏览 114回答 1
1回答

繁花如伊

首先,我假设您有几个相同的 if/else 语句与第二个代码片段中的语句相匹配。我们可以通过在您的代码中使用额外的循环来清理它们。我还将向您展示如何使用数组而不是为每一天创建一个单独的变量。在循环上方,创建一个数组,其中每个键对应于一周中的一天。(用这个替换你所有的$total{DAY} = 0;变量声明)$days = [&nbsp; &nbsp; 'Monday' => 0,&nbsp; &nbsp; 'Tuesday' => 0,&nbsp; &nbsp; 'Wednesday' => 0,&nbsp; &nbsp; 'Thursday' => 0,&nbsp; &nbsp; 'Friday' => 0];现在,我们可以替换用于增加$total{DAY}变量的 if/else 语句。将所有这些 if/else 语句替换为:foreach(array_keys($days) as $day) {&nbsp; &nbsp; echo '<b>{$day}: </b>';&nbsp; &nbsp; if(!empty($presentie["work{$day}"])) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ++$days[$day];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $presentie["work{$day}"];;&nbsp; &nbsp; } else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'not available';&nbsp; &nbsp; }}这 9 行代码与您之前的 ~35 行代码完全相同。现在,进入您的实际问题。您在评论中说,您在问题中要求的输出是“ ...在同一页面上且在循环之前”。这是一个问题,因为您的循环会增加这些值,因此无法在循环之前访问它们。你必须把它放在循环之后。以下是循环后的操作方法://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) {&nbsp; &nbsp; echo $days[$day_of_week] . " people available.";} else {&nbsp; &nbsp; echo "Not Available";}
随时随地看视频慕课网APP
我要回答