php报错Inf and NaN cannot be JSON encoded怎么处理

在 PHP 中,如果尝试将 Inf**(正无穷大)** 和 NaN**(不是数字)**这样的特殊值直接用json_encode转换为 JSON 格式,就会出现报错 "Inf and NaN cannot be JSON encoded"。要处理这个问题,可以采取以下方法之一:

1、转换为有效的 JSON 值:将 Inf 和 NaN 替换为 JSON 支持的有效值

例如,将 Inf 替换为一个很大的数值(例如 999999999),将 NaN 替换为 null 或者字符串 "NaN"。

示例代码:

php 复制代码
$value = INF; // Inf or NaN value
// Convert Inf and NaN to valid JSON values
if (is_infinite($value)) {
    $value = 99999999; // Replace Inf with a large number
} elseif (is_nan($value)) {
    $value = 'NaN'; // Replace NaN with string "NaN"
}
$jsonData = json_encode($value);
echo $jsonData;

2、在json_encode函数中使用 JSON_PARTIAL_OUTPUT_ON_ERROR 选项

在 PHP 7.1 及更高版本中,可以通过设置 JSON_PARTIAL_OUTPUT_ON_ERROR 选项来避免报错,并将 Inf 和 NaN 编码为 null。

示例代码:

php 复制代码
$value = INF; // Inf or NaN value
$jsonData = json_encode($value, JSON_PARTIAL_OUTPUT_ON_ERROR);
echo $jsonData;
相关推荐
极创信息43 分钟前
信创软件安全加固指南,信创软件的纵深防御体系
java·大数据·数据库·金融·php·mvc·软件工程
诗词在线3 小时前
诗词在线古诗词传播
人工智能·word·php
源码宝3 小时前
使用 PHP(Laravel 8)+ Vue 2 + Element UI + MySQL 5.7开发一套医院不良事件系统的注意事项
vue.js·php·laravel
不会写DN3 小时前
PHP 中处理图像的利器 GD库
开发语言·php
cch89185 小时前
PHP vs 易语言:Web开发与桌面编程大对决
开发语言·前端·php
不会写DN6 小时前
如何使用PHP创建图像验证码
android·开发语言·php
xuboyok27 小时前
PHP vs Java:核心差异与选型指南
开发语言·前端·php
cch89187 小时前
PHP与汇编:高级与低级的终极对决
开发语言·汇编·php
cyber_两只龙宝7 小时前
【Nginx】Nginx中location的使用方法详解
linux·运维·nginx·云原生·php·web
heimeiyingwang8 小时前
【架构实战】混沌工程:让系统更健壮的实践
开发语言·架构·php