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;
相关推荐
真正的醒悟1 天前
202503-经验之道
服务器·网络·php
wuxuanok1 天前
ThinkPHP ——安装部署与配置
sql·mysql·nginx·php
霍格沃兹测试学院-小舟畅学2 天前
性能测试入门:使用 Playwright 测量关键 Web 性能指标
开发语言·前端·php
zorro_z2 天前
ThinkPHP8学习篇(十三):视图
php
sc.溯琛2 天前
计算机网络:概论学习1
网络·智能路由器·php
#微爱帮#2 天前
微爱帮监狱写信寄信小程序PHP高并发优化技术方案
服务器·php·apache
_dindong2 天前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
霸王大陆2 天前
《零基础学PHP:从入门到实战》教程-模块八:面向对象编程(OOP)入门-5
开发语言·笔记·php·课程设计
霸王大陆2 天前
《零基础学 PHP:从入门到实战》模块十一:成为 PHP 侦探,精通错误处理与调试实战大全-1
开发语言·笔记·php·课程设计
JaguarJack2 天前
如何创建和使用 Shell 脚本实现 PHP 部署自动化
后端·php