本文详解如何根据 postman 传入的单个交易对符号(如 "btcusdt"),从 api 返回的关联数组中精准提取对应价格,避免因数据类型误用导致的 null 输出问题。
你的核心问题在于:$request->symbol 是一个字符串(如 "BTCUSDT"),而你却用 foreach ($symbol as $ticker => $pairname) 尝试遍历它——这在 PHP 中会直接报错或静默失败(取决于错误级别),因为字符串不可被遍历为数组,foreach 对字符串不生效,导致 $pairname 未定义,最终输出 NULL 或空值。
同时,你混淆了变量名:$ticker 是 API 返回的完整价格数组(键为交易对,值为价格),但你在 foreach 中又把 $ticker 用作循环键名(foreach ($symbol as $ticker => $pairname)),覆盖了原 $ticker 数组,造成逻辑混乱。
✅ 正确做法是:将 $request->symbol 视为查找键(key),直接从 $ticker 数组中获取对应价格,无需 foreach 遍历整个数组:
// ✅ 正确:直接通过键访问
$symbol = $request->symbol; // 字符串,例如 "BTCUSDT"
$ticker = $api->prices(); // 关联数组,如 ["BTCUSDT" => "37173.34", ...]
if (isset($ticker[$symbol])) {
echo $ticker[$symbol]; // 输出 "37173.34"
} else {
echo 'Symbol not found';
}⚠️ 注意事项:
? 总结:面向“按需查询”的场景,应采用 键值直取(O(1)) 而非全量遍历(O(n))。既高效、安全,又符合 RESTful 接口设计原则。