問題

私はarray_intersectを使用して、既存の国の配列を別の配列に存在する国コードだけにフィルタリングしようとしています。

 $country_codes = array('UK','IRL');

$country_list = array(
      'ALB' => 'Albania',
      'AND' => 'Andorra',
      'ARM' => 'Armenia',
      'AUT' => 'Austria',
      'AZE' => 'Azerbaijan',
      'BLR' => 'Belarus',
      'BEL' => 'Belgium',
      'BIH' => 'Bosnia and Herzegovina',
      'BGR' => 'Bulgaria',
      'HRV' => 'Croatia',
      'CYP' => 'Cyprus',
      'CZE' => 'Czech Republic',
      'DNK' => 'Denmark',
      'EST' => 'Estonia',
      'FIN' => 'Finland',
      'FRA' => 'France',
      'GEO' => 'Georgia',
      'DEU' => 'Germany',
      'GRC' => 'Greece',
      'HUN' => 'Hungary',
      'ISL' => 'Iceland',
      'IRL' => 'Ireland',
      'ITA' => 'Italy',
      'KAZ' => 'Kazakhstan',
      'RKS' => 'Kosovo',
      'LVA' => 'Latvia',
      'LIE' => 'Liechtenstein',
      'LTU' => 'Lithuania',
      'LUX' => 'Luxembourg',
      'MLT' => 'Malta',
      'MDA' => 'Moldova',
      'MCO' => 'Monaco',
      'MNE' => 'Montenegro',
      'NLD' => 'Netherlands',
      'MKD' => 'North Macedonia',
      'NOR' => 'Norway',
      'POL' => 'Poland',
      'PRT' => 'Portugal',
      'ROU' => 'Romania',
      'RUS' => 'Russia',
      'SMR' => 'San Marino',
      'SRB' => 'Serbia',
      'SVK' => 'Slovakia',
      'SVN' => 'Slovenia',
      'ESP' => 'Spain',
      'SWE' => 'Sweden',
      'CHE' => 'Switzerland',
      'TUR' => 'Turkey',
      'UKR' => 'Ukraine',
      'UK' => 'UK',
    );

$filtered_countries = array_intersect($country_list, $country_codes);

 

私のコードは半分働いているようです...それは '英国'キーを返していますが、 'IRL'を無視しています。

結果の配列を出力すると、次のように表示されます。

 Array
(
    [UK] => UK
)
 

私はこれを期待しています:

 Array
(
    [IRL] => Ireland
    [UK] => UK
)
 

誰かが私を正しい方向に向け、なぜこれが起こっているのか説明できますか?

  ベストアンサー

array_intersect() はキーではない値に基づいています。 array_intersect_keyarray_flipを使うことができます

 $filtered_countries = array_intersect_key($country_list,  
                      array_flip($country_codes));
print_r($filtered_countries);
 

array_intersect_key - キーを用いて配列の交差点を計算する

array_flip - すべてのキーを配列内の関連する値に置き換える

デモ

出力: -

 Array
(
    [IRL] => Ireland
    [UK] => UK
)
 

  同じタグがついた質問を見る

phparrays