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;
相关推荐
北京_小杰子30 分钟前
Windows10本地安装SQLserver数据库连接的过程
数据库·windows·sqlserver·php
众创岛35 分钟前
使用IIS运行php程序,处理put和delete请求出现405错误
开发语言·php
柠檬味的Cat16 小时前
零基础搭建WordPress网站完整流程
后端·php
代龙涛16 小时前
wordpress块主题
开发语言·后端·php
jipeng599416 小时前
(在项目中学习技术)完成使用swoole完成App二维码扫码登录网页端的操作
后端·php
troublea17 小时前
Laravel 10.X重磅升级:8大核心特性解析
php·laravel
模型时代18 小时前
Arista暗示正在开发AI网络管理遥测工具
开发语言·人工智能·php
电商API_1800790524718 小时前
京东商品评论API接口封装的心路历程
服务器·开发语言·爬虫·数据分析·php
bepeater123419 小时前
Laravel 10.x重磅升级:六大核心特性解析
jvm·php·laravel
刘恒12345678921 小时前
Windows 电脑文件夹手动分类指南
java·windows·python·电脑·php