【发布时间】: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