PHP条件提取JSON汇率数据及生成有效JSON问题求助
PHP汇率数据处理解决方案
问题1:基于货币名称稳定获取指定汇率
别依赖数组索引,直接根据FROM_CURR_NAME和TO_CURR_NAME做条件匹配就行。假设你已经通过curl获取并解析得到了汇率数组$exchangeRates,可以这么处理:
// 定义需要获取的目标货币对 $targetPairs = [ ['from' => 'EUR', 'to' => 'GBP'], ['from' => 'EUR', 'to' => 'TRY'], ['from' => 'USD', 'to' => 'GBP'], ]; $filteredRates = []; // 遍历所有汇率数据,匹配目标货币对 foreach ($exchangeRates as $rate) { foreach ($targetPairs as $pair) { if ($rate['FROM_CURR_NAME'] === $pair['from'] && $rate['TO_CURR_NAME'] === $pair['to']) { $filteredRates[] = [ 'currency_pair' => $pair['from'] . '→' . $pair['to'], 'sell_rate' => $rate['SELL_RATE'], 'buy_rate' => $rate['BUY_RATE'] ]; // 找到匹配项后跳出内层循环,避免重复匹配 break; } } } // 此时$filteredRates里就是你需要的稳定数据
不管原数组索引怎么变,只要货币名称字段不变,就能准确拿到对应汇率。
问题2:修复无效JSON格式问题
别手动拼接JSON字符串,PHP内置的json_encode()函数会自动处理格式、转义等问题,确保生成的JSON有效。
错误示例(手动拼接导致的格式问题):
// 错误做法:手动拼接字符串,容易出现多余引号、转义错误 $jsonStr = '['; foreach ($filteredRates as $item) { $jsonStr .= '{"currency_pair":"' . $item['currency_pair'] . '", ...},'; } $jsonStr .= ']';
正确做法:直接将PHP数组转成JSON:
// 用json_encode直接生成标准JSON $validJson = json_encode($filteredRates, JSON_PRETTY_PRINT); // 输出或使用这个JSON字符串 echo $validJson;
JSON_PRETTY_PRINT参数是可选的,用于格式化输出方便阅读,生产环境可以去掉。这样生成的JSON完全符合规范,不会出现多余引号或格式错误。
内容的提问来源于stack exchange,提问作者Kleidi
相关产品推荐
相关产品推荐

