【问题标题】:Currency code to a symbol - PHP JSON货币代码到符号 - PHP JSON
【发布时间】:2017-11-26 09:59:17
【问题描述】:

我想创建一个系统,通过接收货币代码(3 个字母)返回官方货币符号,这意味着一旦函数接收到美元,它将返回 $ 符号,因此返回世界上所有的分母。

我用我发布的函数得到的结果是错误的(我想得到美元的美元,而不是 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.你真的需要每次都获取那个 JSON 文件吗?我不认为货币符号经常变化,该文件的本地副本或简单的查找数组就足够了。 2. 向我们展示您正在使用的数据样本。
  • 我不太确定你在 searchJson()-function 中要做什么。该函数只需要包含:return !empty($obj[$value]) ? $obj[$value]['symbol_native'] : null;,如果存在,它将返回正确的符号。
  • @MagnusEriksson 非常感谢您

标签: php arrays json curl currency


【解决方案1】:

您只需要将您的字符串与 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;
    }

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多