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;
相关推荐
4311媒体网1 天前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
Evan芙1 天前
nginx+php部署walle,发布php站点
运维·nginx·php
catchadmin1 天前
PHP 8.6 即将支持部分函数应用
php
未来之窗软件服务2 天前
幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期
java·php·jar·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟一体化
BingoGo2 天前
Laravel + Vue3 前后端分离开源后台管理框架 CatchAdmin v5.0 Beta 发布
后端·php
行思理2 天前
Linux多PHP如何切换系统默认PHP版本
linux·运维·php
Web极客码2 天前
如何通过GUI或命令行更改Ubuntu 20.04的DNS设置
linux·ubuntu·php
毕设源码-朱学姐2 天前
【开题答辩全过程】以 基于PHP的高校心理测评系统的设计与实现为例,包含答辩的问题和答案
开发语言·php
JaguarJack2 天前
PHP 8.6 新增 clamp() 函数
后端·php
BingoGo2 天前
PHP 8.6 新增 clamp() 函数
后端·php