0

PHP で 2 つの連想キー間の配列スライスを取得する最も簡単な方法は何ですか?

たとえば、配列の場合

$arr = array('2012-02-01'=> 'bla blah',
'2012-02-02'=> 'bla blah',
'2013-02-03'=> 'bla blah',
'2012-02-04'=> 'bla blah',
'2012-02-05'=> 'bla blah',
'2010-03-06'=> 'bla blah',
'2012-04-07'=> 'bla blah',
'2012-01-08'=> 'bla blah',
'2012-02-09'=> 'bla blah',
'2012-10-10'=> 'bla blah',
'2012-12-03'=> 'bla blah');

キー「2012-02-04」とキー「2012-04-07」の間のすべてのスライスを取得するには、次のようにします。

array('2012-02-04'=> 'bla blah',
'2012-02-05'=> 'bla blah',
'2010-03-06'=> 'bla blah',
'2012-04-07'=> 'bla blah')
4

1 に答える 1

2

両方のキーが配列にあることが確実である限り:

$arr = array(
    '2012-02-01'=> 'bla blah',
    '2012-02-02'=> 'bla blah',
    '2013-02-03'=> 'bla blah',
    '2012-02-04'=> 'bla blah',
    '2012-02-05'=> 'bla blah',
    '2010-03-06'=> 'bla blah',
    '2012-04-07'=> 'bla blah',
    '2012-01-08'=> 'bla blah',
    '2012-02-09'=> 'bla blah',
    '2012-10-10'=> 'bla blah',
    '2012-12-03'=> 'bla blah'
);
$startKey = '2012-02-04';
$endKey = '2012-02-07';

$new = array_slice(
    $arr,
    array_search($startKey, array_keys($arr)),
    array_search($endKey, array_keys($arr)) - 
        array_search($startKey, array_keys($arr)) + 1
);
var_dump($new);

それ以外の場合は、array_slice() を実行する前に、array_search() 呼び出しからの戻り値に対して少し検証を行う必要があります。

于 2013-10-03T13:30:06.430 に答える