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

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


pref_areas= array(
	"hokkaido" => array(1,"北海道"),	"aomori" => array(2,"青森県"),.....
  • 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には今のキーが代入される

  • paciffic