PHP通过[“something_ *”]选择数组元素

时间:2012-12-05 17:10:24

标签: php arrays

我想知道这种情况。

如果我有大量关于50k项目或更多项目的话,该怎么办?

现在让我们说很多数组键都有前缀,我们将它命名为settings_,现在如果我想选择所有以settings_开头的键,我需要循环所有50k物品还是有更好的方法?

并且说使用单级数组有一些“神奇”的方法,那么多维数组呢?

2 个答案:

答案 0 :(得分:3)

preg_grep,它与数组值匹配。由于您要搜索键,因此需要使用array_flip反转键和值:

<?php
$array = array(
    'armenia' => 0,
    'argentina' => 1,
    'brazil' => 2,
    'bolivia' => 3,
    'congo' => 4,
    'denmark' => 5
);
$filtered = array_flip(preg_grep('/^b/', array_flip($array)));

var_dump($filtered);
/*
Output:

array(2) {
  ["brazil"]=>
  int(2)
  ["bolivia"]=>
  int(3)
}
*/

答案 1 :(得分:0)

$arr_main_array = array('something_test' => 123, 'other_test' => 456, 'something_result' => 789);

foreach($arr_main_array as $key => $value){
    $exp_key = explode('_', $key);
    if($exp_key[0] == 'something'){
        $arr_result[] = $value;
    }
}

if(isset($arr_result)){
   print_r($arr_result);
}

您可以执行代码 http://sandbox.onlinephpfunctions.com/code/884816dd115b3ccc610e1732e9716471a7b29b0f