符号的货币代码 - PHP JSON

时间:2017-11-26 09:59:17

标签: php arrays json curl currency

我想创建一个系统,通过接收货币代码(3个字母)来返回官方货币符号,这意味着一旦该功能收到USD,它将返回$符号,因此返回给全世界的所有分母。

我使用我发布的函数获得的结果是错误的(我想获得$ for USD而不是د.إ.forAED)。我不知道为什么? 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 个答案:

答案 0 :(得分: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;
    }