2017-11-26 18 views
0

通貨コード(3文字)を受け取って公式通貨記号を返すシステムを作成します。これは、関数がUSDを受け取ると$記号を返すことを意味します世界のすべての分母に記号への通貨コード - PHP JSON

私が発行した機能がうまくいかない結果になりました(私はUSDには$を、AEDにはد.إは得られません)。なぜ私は考えていない? TIA

Array ( 
    [symbol] => AED [symbol_native] => د.إ.‏ 
    [decimal_digits] => 2 
    [rounding] => 0 [code] => AED 
) 
function file_get_contents_curl($url) { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 

    function searchJson($obj, $value) { 
     foreach($obj as $key => $item) { 
      if(!is_nan(intval($key)) && is_array($item)){ 
       if(in_array($value, $item)) return $item; 
      } else { 
       foreach($item as $child) { 
        if(isset($child) && $child == $value) { 
         return $child; 
        } 
       } 
      } 
     } 
     return null; 
    } 

    function get_currency_symbol($cur) 
    { 
    $json = file_get_contents_curl('http://www.localeplanet.com/api/auto/currencymap.json');  
    $data = json_decode($json, true); 
    $results = searchJson($data , $cur); 
    return $results; 
    } 

    print_r(get_currency_symbol('USD')); 
+1

1.あなたが本当に毎回そのJSONファイルを取得する必要がありますか?私は、通貨記号が頻繁にそれを変更しているとは思わない、そのファイルのローカルコピーまたは単純な検索配列で十分です。 2.作業しているデータのサンプルを表示します。 – deceze

+1

'searchJson()'関数で何をしようとしているのか分かりません。すべての関数には次のものが必要です: 'return!empty($ obj [$ value])? $ obj [$ value] ['symbol_native']:null; '存在する場合、正しいシンボルを返します。 –

+0

@MagnusEriksson完璧ありがとう – AnnaLA

答えて

3

あなただけの鍵を復号し、JSONを使って文字列に一致する必要があります。

function searchJson($obj, $value) {  
     foreach($obj as $key => $item) { 
      if(strtolower($key) == strtolower($value)) 
      return $item; 

     } 
     return null; 
    } 

DEMO

または単にチェックインデックス直接

function searchJson($obj, $value) { 
     $data = isset($obj[$value])?$obj[$value]:null;   
     return $data; 
    } 
関連する問題