PHPにて1〜100と50〜150が重なっているか、また2016年4月1日〜2016年4月30日と2016年4月15日〜2016年5月15日が重なっているかなどを判定したい時に使えます。 日付の場合はUNIXTIMEに変換しておけば比較できます。 数値の場合 †$start1 = 1; $end1 = 100; $start2 = 50; $end2 = 150; $flag = duplicateCheck($start1, $end1, $start2, $end2); // 重複していればTRUE function ($start1, $end1, $start2, $end2) { $flag = FALSE; if ($start1 <= $end2 && $start2 <= $end1) { $flag = TRUE; } return $flag; } 日付の場合 †$start1 = '2016-04-01'; $end1 = '2016-04-30'; $start2 = '2016-04-15'; $end2 = '2016-05-15'; $flag = duplicateCheck($start1, $end1, $start2, $end2); // 重複していればTRUE function duplicateCheck($start1, $end1, $start2, $end2) { $flag = FALSE; $start1 = strtotime($start1); $end1 = strtotime($end1); $start2 = strtotime($start2); $end2 = strtotime($end2); if ($start1 <= $end2 && $start2 <= $end1) { $flag = TRUE; } return $flag; } |