二次元の連想配列を値で検索して一次元のキーを取得 php 配列を2次元の値で取得

こんな感じの2次元配列がある

[highlight_php]
pref_areas= array(
“hokkaido” => array(1,”北海道”), “aomori” => array(2,”青森県”),…..
[/highlight_php]

  • array_column
  • array_search
  • array_slice
  • key

    青森県 で aomori を取得したい場合 、上の関数から順に使って

    	
     var_dump(key(array_slice($pref_areas, array_search( '青森県',array_column($pref_areas,1)), 1, true)));
    

    二次元の方のキーを取得したい場合

    		
     var_dump(array_search( "青森県" ,array_column($pref_areas, 1 ))+1 );
    

    javascript EC6でもできるようになった

    
    
    var obj2={'北海道':'hokkaido','青森':'aomori'};
      var searchKen = 'aomori';
      
    var result = Object.keys(obj2).reduce(function(r, k) {
                 return obj2[k] == searchKen ? k : r 
            }, null);
    console.log(result);
    

    reduce → 配列をループして1つの値を取得。

    rにはそれまでの結果
    kには今のキーが代入される