【发布时间】:2021-01-14 15:23:44
【问题描述】:
对于预订系统,我想查看用户输入的开始和结束日期是否与存储在两个数组中的开始和结束日期相交。一个数组保存所有开始日期,一个数组保存所有结束日期。数组中的值之前已经从数据库中获取过。
$startArray = [0 => "1.1.2021", 1 => "5.1.2021", 2 => "10.1.2021"];
$endArray = [0 => "6.1.2021", 1 => "8.1.2021", 2 => "13.1.2021"];
$startUser = "3.1.2021";
$endUser = "5.1.2021";
我的目标是查看用户所做的选择是否与数组中的选择相交。 这个我试过了
foreach ($startArray as $key => $value) {
if (($startUser <= $endArray[$key]) && ($endUser >= $value)) {
//action;
}
但这不起作用。我最好怎么做?
编辑:日期格式实际上是 2021-01-01。既在数组中,又在用户输入中。
【问题讨论】:
-
我有点不清楚。 “开始日期”和“结束日期”是固定的吗?意思是,如果我从 1.1.2021 开始,我必须在 6.1.2021 或更早之前完成(两者都是数组中的第一个分支)
-
交叉点意味着任何形式的重叠。从逻辑的角度来看,这意味着用户开始在 db end 之前,而 user end 在 db start 之后。这就是你的目标吗?
-
另外,如果您将间隔组织成一个数组,其中每个元素都是一个包含开始日期和结束日期的数组,这可能会使您的比较更容易。
-
@El_Vanja 不完全是。该数据库仅包含预订系统的所有预订列表。数组中的开始日期和结束日期按索引属于一起。 startUser 和 enduser 是用户输入的值,他们希望将预订添加到数据库中。我只想检查用户给出的日期是否与数据库中另一个已经存在的预订冲突。我只是使用数组来存储所有结果。
-
@EdenMoshe 数组中的值相互关联。 startArray 中的索引 0 是开始,endArray 中的索引 0 是该持续时间的结束。与索引 1、2 等相同。这些日期都是固定的,不能更改,因此如果它从 1.1.2021 开始,它必须在 6.1.2021 结束。我想知道 startUser 和 endUser 的持续时间是否与数组中的任何时间跨度重叠。
标签: php date date-comparison