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;
相关推荐
Chasing__Dreams3 小时前
Redis--基础知识点--29--Redis瓶颈
数据库·redis·php
ZHOUPUYU7 小时前
PHP性能优化实战:提升你的应用速度
android·性能优化·php
特长腿特长8 小时前
LVS的DR模式和NET模式的基础案例
服务器·php·lvs
卵男(章鱼)9 小时前
汽车网络通讯分析与仿真工具的系统工程:Vector CANoe与ZLG ZCANPRO深度剖析
开发语言·汽车·php
以神为界9 小时前
PHP与数据库交互实操:连接方法+SQL注入防范+系统数据库解析
数据库·sql·网络安全·php·web
Andya_net11 小时前
网络安全 | 学习NAT44、NAT46、NAT64 与 NAT66原理
学习·web安全·php
niucloud-admin11 小时前
PHP SAAS 框架常见问题——升级提示 mkdir(): Permission denied
php
梦梦代码精11 小时前
LikeShop 深度测评:开源电商的务实之选
java·前端·数据库·后端·云原生·小程序·php
特长腿特长11 小时前
在debian系统上使用kvm、添加网卡设备案例
服务器·debian·php
oy_mail20 小时前
QoS质量配置
开发语言·智能路由器·php