0

たとえば、日付の配列があります。

$dates = array('2013-01-30', '2013-01-31', '2013-02-01', '2013-02-02', '2013-04-04', '2013-04-05', '2013-04-06');

http://codepad.org/Lnh0TYHW

これらの日付の間隔をあける最良の方法は? 受け取りを希望します:

$interval = array(
     array('first' => '2013-01-30', 'last' => '2013-02-02'),
     array('first' => '2013-04-04', 'last' => '2013-04-06')
);

first これは配列からの最初の日付、またはまだ割り当てられていない最初の日付です。最終日 これは、次の日付が null の日付です。例 - 2013-02-02 - 次は 2013-02-03 である必要がありますが、これは配列にないため、2013-02-02 は間隔の最後です。

4

2 に答える 2

0

ここにサンプル関数とその使用法があります。これは私が時々自分で使用するものです。関数の形式を変更して、日付のように見せます

    function dateRange( $first, $last, $step = '+1 day', $format = 'Y/m/d' ) {

        $dates = array();
        $current = strtotime( $first );
        $last = strtotime( $last );

        while( $current <= $last ) {

            $dates[] = date( $format, $current );
            $current = strtotime( $step, $current );
        }

        return $dates;
    }

print_r( dateRange( '2010/07/26', '2010/08/05') );

Array (

[0] => 2010/07/26

[1] => 2010/07/27

[2] => 2010/07/28

[3] => 2010/07/29

[4] => 2010/07/30

[5] => 2010/07/31

[6] => 2010/08/01

[7] => 2010/08/02

[8] => 2010/08/03

[9] => 2010/08/04

[10] => 2010/08/05

)

週もスキップします:

print_r( dateRange( '2010/07/26', '2010/08/05', '+1 week') );

Array (

[0] => 2010/07/26

[1] => 2010/08/02

)

したがって、あなたの場合、次のように使用します。

print_r(dateRange($interval[0]['first'], $interval[0]['last']));
于 2013-06-10T08:23:53.197 に答える