




本文讲解在 php 表单中通过 foreach 动态生成加密货币下拉选项时,为何 `$_post['from']` 返回的是汇率值而非货币代码,并提供安全、规范的解决方案。
在构建加密货币换算器时,你使用了类似如下结构的 foreach 循环来渲染
⚠️ 关键问题在于原始代码中 value 属性被错误地设为了 $rates(即汇率数值):
// ❌ 错误写法:value 是数值,提交后无法获知用户选的是哪种币
这导致表单提交后,$_POST['from'] 接收到的是类似 0.7

✅ 正确做法是:
✅ htmlspecialchars() 防止 XSS;number_format() 让汇率更易读。
随后,在表单处理逻辑中,你应根据提交的货币代码查表获取对应汇率:
if (isset($_POST['convert_crypto'])) {
$amount = floatval($_POST['amount'] ?? 0);
$fromCode = $_POST['from'] ?? '';
$toCode = $_POST['to'] ?? '';
// ✅ 安全校验:确保货币代码存在于原始数据中
if (!isset($arr_usd["rates"][$fromCode])) {
echo "错误:不支持的源货币 '$fromCode'";
exit;
}
$fromRate = $arr_usd["rates"][$fromCode];
if ($toCode === 'USD') {
$result = round($amount * $fromRate, 2);
echo "$amount $fromCode = $result US Dollar";
} elseif ($toCode === 'EUR') {
// 此处需扩展 EUR 汇率逻辑(例如通过另一组汇率或中间换算)
echo "EUR 转换逻辑待实现";
}
}? 重要提醒:
遵循以上结构,你的下拉菜单既清晰可读,又确保后端能准确识别用户选择——真正实现“所见即所得”的货币换算体验。