【问题标题】:array_slice by two associative indexesarray_slice 通过两个关联索引
【发布时间】:2013-10-10 05:17:03
【问题描述】:

在 PHP 中获取两个关联键之间的数组切片的最简单方法是什么?

例如,对于数组

$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')

【问题讨论】:

    标签: php arrays slice


    【解决方案1】:

    只要你确定两个键都在数组中:

    $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() 调用的返回结果进行一些验证

    【讨论】:

    • 我正在使用一个大数组。有没有办法在不调用 array_keys 3 次的情况下做到这一点?也没有工作。错过了最后 2 个键
    • 是的,在 array_slice() 之外调用它两次并将结果存储在变量中,然后在 array_slice() 中使用这些变量......您还可以消除进一步的数组( ) 键通过调用一次并将结果存储在变量等中来调用。
    猜你喜欢
    • 2018-07-14
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多