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