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



我正在制作一个网站,您可以在其中预订位置,但对于某些位置,需要有人在那里。早些时候我问了一个关于如何计算某些日子有多少人的问题,例如:周一有 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';
}

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

首先,我假设您有几个相同的 if/else 语句,这些语句与您在第二个代码片段中的语句匹配。我们可以通过在代码中使用其他循环来清理它们。我还将向您展示如何使用数组,而不是每天创建一个单独的变量。

在循环上方,创建一个数组,其中每个键对应于一周中的某一天。(将所有$total{DAY} = 0;变量声明替换为此(

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

现在,我们可以替换用于增加$total{DAY}变量的 if/else 语句。将所有这些 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 行代码完全相同。


现在,进入您的实际问题。您在评论中说,您在问题中要求的输出是">......在同一页面上和循环之前"。这是一个问题,因为您的循环会增加这些值,因此无法在循环之前访问它们。你必须把它放在循环之后。以下是循环后的操作方法:

//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";
}

最新更新