13

次のような配列がある場合:

array [
       y => 35
       x => 51
       z => 35
       c_3 => 4
       c_1 => 54
       c_6 => 53
       c_9 => 52
] 

次の配列を取得したい:

array [c_3=>4, c_1=>54, c_6=>53, c_9=>52]

で始まるキーを持たない要素を除外するにはどうすればよいc_ですか?

4

7 に答える 7

10

これを試して :

$filtred = array();

foreach($yourArray as $key => $value)
  if(preg_match('/c_\d/',$key))
    $filtred[] = $value;

print_r($filtred);
于 2012-08-13T11:28:46.590 に答える
7

これを試して

 //your array
    $arr1 = array (
           "y" => 35,
           "x" => 51,
           "z" => 35,
           "c_3" => 4,
           "c_1" => 54,
           "c_6" => 53,
           "c_9" => 52
    );
// Array with keys you want
    $arr2 =  array (
           "c_3" => '',
           "c_1" => '',
           "c_6" => '',
           "c_9" => ''
    );
//use array_intersect_key to find the common  ;)
    print_r(array_intersect_key($arr1,$arr2));
于 2012-08-13T11:59:05.123 に答える
6

このソリューションを確認してくださいarray_filter()

 $arr = [
   'y' => 35,
   'x' => 51,
   'z' => 35,
   'c_3' => 4,
   'c_1' => 54,
   'c_6' => 53,
   'c_9' => 52,
 ];

 $filtered = array_filter($arr, function($v) use($arr){
   return preg_match('#c_\d#', array_search($v, $arr));
 });

以下のソリューションは PHP >= 5.6.0 で動作します

 $filtered = array_filter($arr, function($k){
   return preg_match('#c_\d#', $k);
 }, ARRAY_FILTER_USE_KEY);

どちらのソリューションも機能します。私はそれらをチェックしました。

于 2015-08-13T13:31:25.313 に答える
2

を使ってみることができますarray_filter()

PHP ドキュメント ページに興味深い例がいくつかあります。それらの 1 つは、配列キーのフィルタリングをカバーしています。

于 2012-08-13T11:29:57.710 に答える
0

既知のキーを選択するだけの場合は、array_slice: http://php.net/manual/en/function.array-slice.phpを使用します。キーで配列をフィルタリングするための解決策があります: PHP: array_filter() を使用して配列キーをフィルタリングする方法は?

于 2012-08-13T11:28:13.953 に答える