PHP json_decode转关联数组时false值打印异常及取值问题
现象说明
这个表现完全正常,不存在JSON解析错误。print_r输出中[ok] =>后显示为空,是PHP原生输出特性导致的:print_r打印布尔类型的false值时,不会输出false字符串,会直接留空。如果需要查看值的真实类型和内容,换用var_dump($messaggio)即可,输出会明确显示["ok"]=> bool(false),和预期的解析结果完全一致。
正确获取字段值的方式
直接通过关联数组下标取值即可,注意判断布尔值时使用严格比较,避免其他空值造成逻辑误判:
$messaggio = '{"ok":false,"error_code":400,"description":"Bad Request"}'; $messaggio = json_decode($messaggio, true); // 可选:增加解析合法性校验,避免异常JSON格式导致程序报错 if (json_last_error() !== JSON_ERROR_NONE) { throw new Exception("JSON解析失败:" . json_last_error_msg()); } // 取出ok字段值存入变量 $isOk = $messaggio['ok']; // 严格判断值做业务逻辑 if ($isOk === false) { $errorCode = $messaggio['error_code']; $errorDesc = $messaggio['description']; echo "请求失败,错误码:{$errorCode},错误信息:{$errorDesc}"; }
注意:不要用松散比较(比如
if (!$isOk))判断该字段,否则当字段值为0、空字符串、null时也会进入失败逻辑,和接口实际语义不符。
内容的提问来源于stack exchange,提问作者user18545619
相关产品推荐
相关产品推荐

