首页 > 解决方案 > PHP数组中的天数的交集

问题描述

对于预订系统,我想查看用户输入的开始和结束日期是否与存储在两个数组中的开始和结束日期相交。一个数组保存所有开始日期,一个数组保存所有结束日期。数组中的值之前已从数据库中获取。

$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。在数组中以及用户输入中。

标签: phpdatedate-comparison

解决方案


很难比较这样的字符串。检查日期时我喜欢做的是使用可以更容易比较的 DateTime 对象。

$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);
?>
bool(false)
bool(true)
bool(false)

推荐阅读