我想创建一个系统,通过接收货币代码(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'));
答案 0 :(得分:3)
您只需要将您的字符串与json解码密钥匹配。
function searchJson( $obj, $value ) {
foreach( $obj as $key => $item ) {
if(strtolower($key) == strtolower($value))
return $item;
}
return null;
}
或者直接检查索引
function searchJson( $obj, $value ) {
$data = isset($obj[$value])?$obj[$value]:null;
return $data;
}