PHP Curl调用API时两类错误响应的统一处理方案问询
统一处理两种错误响应的解决方案
这个问题的核心是你碰到了两种不同结构的错误响应:一种的message是字符串(卡号无效场景),另一种是关联数组(字段缺失场景),而你的遍历代码只适配了数组类型的错误,所以字符串类型的错误没法正常展示。
咱们可以通过判断错误信息的类型,分别处理两种场景,实现统一展示:
// 先从Session中取出错误信息 $errorMsg = $_SESSION['error_message']; // 判断错误信息的类型 if (is_array($errorMsg)) { // 处理字段缺失的数组类型错误,沿用你原来的遍历逻辑 foreach ($errorMsg as $x => $x_value) { echo ucfirst($x) . " " . $x_value . "<br>"; } } else { // 处理卡号无效的字符串类型错误,直接输出完整错误信息 echo $errorMsg . "<br>"; }
如果想要让字符串类型的错误展示格式和数组错误更统一(比如都带上类似"Message"的前缀),可以调整else分支的代码:
} else { // 统一格式,添加前缀后输出 echo "Message " . $errorMsg . "<br>"; }
为什么原代码无法处理字符串类型错误?
当$_SESSION['error_message']是字符串时,foreach会尝试把字符串拆分成单个字符来遍历,这显然不是你需要的效果;而直接echo $_SESSION['error_message']能正常显示,是因为它直接输出了整个字符串内容,没有做遍历处理。
内容的提问来源于stack exchange,提问作者user3550203
相关产品推荐
相关产品推荐

