Php 比较签入签出日期与数组块日期

Php 比较签入签出日期与数组块日期,php,arrays,date,Php,Arrays,Date,我正在创建预订web应用程序。 我已从服务中提取数组,包含阻止的日期。 使用日历小部件,我想在2014年7月30日至2014年8月04日期间进行预订。 由于我的预订日期在阻止日期中(第二个索引[2014-08-01-2014-08-02]被阻止),因此应返回false(无法继续预订) $checkin='2014-07-30'; $checkout='2014-08-04'; $blockedDates=数组( 排列( “开始”=>“2014-07-24”, “结束”=>“2014-07-27”

我正在创建预订web应用程序。 我已从服务中提取数组,包含阻止的日期。 使用日历小部件,我想在2014年7月30日至2014年8月04日期间进行预订。 由于我的预订日期在阻止日期中(第二个索引[2014-08-01-2014-08-02]被阻止),因此应返回false(无法继续预订)

$checkin='2014-07-30';
$checkout='2014-08-04';
$blockedDates=数组(
排列(
“开始”=>“2014-07-24”,
“结束”=>“2014-07-27”
),
排列(
“开始”=>“2014-08-01”,
“结束”=>“2014-08-02”
),
排列(
“开始”=>“2014-08-12”,
“结束”=>“2014-08-15”
)
);
函数morfora($blokedDates、$checkin、$checkout)
{
foreach($日期为blokedDates){
如果($checkin>=$date['start']&&$checkin您在“($checkin>=$date['start']&&$checkin中有错误,请尝试以下操作:

function checkBookedDate($start_date, $end_date, $date_range)
{
    /**
     * @var $start_object DateTime
     */
    $start_object = DateTime::createFromFormat('Y-m-d', $start_date);
    $end_object = DateTime::createFromFormat('Y-m-d', $end_date);
    if (is_array($date_range)) {
        foreach ($date_range as $row) {
            $range_start = DateTime::createFromFormat('Y-m-d', $row['start']);
            $range_end = DateTime::createFromFormat('Y-m-d', $row['end']);
            if (($start_object > $range_start && $start_object < $range_end) ||
                    ($end_object > $range_start && $end_object < $range_end)) {
                return true;
            }
        }
        return false;
    } else {
        return false;
    }
}
函数checkbookeDate($start\u date、$end\u date、$date\u range)
{
/**
*@var$start\u对象日期时间
*/
$start\u object=DateTime::createFromFormat('Y-m-d',$start\u date);
$end_object=DateTime::createFromFormat('Y-m-d',$end_date);
if(是数组($date\u range)){
foreach($日期\范围为$行){
$range_start=DateTime::createFromFormat('Y-m-d',$row['start']);
$range_end=DateTime::createFromFormat('Y-m-d',$row['end']);
if(($start\u object>$range\u start&&$start\u object<$range\u end)||
($end\u object>$range\u start&$end\u object<$range\u end)){
返回true;
}
}
返回false;
}否则{
返回false;
}
}

是的,我被困在这个问题上了。你知道吗?如果(($checkin>=$date['start']&&&$checkin=$date['start']&&&$checkout),我看不出有什么区别吗?仍然是真的。我认为这不能用这么简单的比较来解决,,
function checkBookedDate($start_date, $end_date, $date_range)
{
    /**
     * @var $start_object DateTime
     */
    $start_object = DateTime::createFromFormat('Y-m-d', $start_date);
    $end_object = DateTime::createFromFormat('Y-m-d', $end_date);
    if (is_array($date_range)) {
        foreach ($date_range as $row) {
            $range_start = DateTime::createFromFormat('Y-m-d', $row['start']);
            $range_end = DateTime::createFromFormat('Y-m-d', $row['end']);
            if (($start_object > $range_start && $start_object < $range_end) ||
                    ($end_object > $range_start && $end_object < $range_end)) {
                return true;
            }
        }
        return false;
    } else {
        return false;
    }
}