从LCX JSON接口获取各交易对数据并单独声明变量的技术需求
修复交易对行情数据获取的PHP代码问题
原代码的核心问题
原代码直接从$json["data"]提取bestBid和bestAsk,但接口返回的data是所有交易对的行情集合,每个交易对都有独立的symbol(交易对标识,如ADAEUR、ADAETH)、bestBid、bestAsk字段。原代码没有区分不同交易对,导致所有变量都取到同一个无效值。
修正后的代码
$url = "https://exchange-api.lcx.com/market/tickers"; $response = file_get_contents($url); // 处理请求失败的情况 if (!$response) { die("无法获取行情数据"); } $json = json_decode($response, true); // 处理JSON解析失败的情况 if (json_last_error() !== JSON_ERROR_NONE) { die("JSON解析失败"); } // 遍历所有交易对,自动生成对应变量 foreach ($json["data"] as $ticker) { $symbol = $ticker["symbol"]; // 动态创建交易对对应的买入价、卖出价变量 ${$symbol . "Bid"} = $ticker["bestBid"]; ${$symbol . "Ask"} = $ticker["bestAsk"]; } // 示例:输出指定交易对的数据 echo "ADAEUR买入价:" . $ADAEURBid . PHP_EOL; echo "ADAEUR卖出价:" . $ADAEURAsk . PHP_EOL; echo "ADAETH买入价:" . $ADAETHBid . PHP_EOL; echo "ADAETH卖出价:" . $ADAETHAsk . PHP_EOL;
可选优化:只处理指定交易对
如果不需要获取所有交易对数据,可以添加过滤逻辑,只生成目标交易对的变量:
$url = "https://exchange-api.lcx.com/market/tickers"; $response = file_get_contents($url); if (!$response) die("无法获取行情数据"); $json = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) die("JSON解析失败"); // 指定需要处理的交易对 $targetSymbols = ["ADAEUR", "ADAETH"]; foreach ($json["data"] as $ticker) { $symbol = $ticker["symbol"]; // 跳过非目标交易对 if (!in_array($symbol, $targetSymbols)) continue; ${$symbol . "Bid"} = $ticker["bestBid"]; ${$symbol . "Ask"} = $ticker["bestAsk"]; } // 使用变量 print_r([ "ADAEURBid" => $ADAEURBid, "ADAEURAsk" => $ADAEURAsk, "ADAETHBid" => $ADAETHBid, "ADAETHAsk" => $ADAETHAsk ]);
内容的提问来源于stack exchange,提问作者TorNetwork
相关产品推荐
相关产品推荐

