1

こんな状況かと思っていました。

50kアイテム以上について膨大な数の発言がある場合はどうなりますか。

ここで、その配列キーの多くにプレフィックスが付いているとしましょう。名前を付けましょうsettings_。キーが始まるすべての値を選択する場合は、settings_すべてのアイテムをループする必要が50kありますか、それともより良い方法がありますか?

そして、単一レベルの配列でこれを行うための「魔法の」方法があるとしましょう。多次元配列についてはどうでしょうか。

4

2 に答える 2

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)
}
*/
于 2012-12-05T17:31:32.497 に答える
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で実行できます。

于 2012-12-05T17:25:35.607 に答える