PHPめも

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;
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-18 (木) 12:00:59 (758d)