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;
相关推荐
千百元4 小时前
网络图标显示不正常
开发语言·网络·php
hans汉斯4 小时前
基于污点分析的PHP应用威胁检测平台
开发语言·人工智能·算法·yolo·目标检测·php·无人机
一次旅行4 小时前
Mac本地部署OpenClaw优化
开发语言·macos·php
博傅5 小时前
docker部署php项目
docker·eureka·php
luanma1509806 小时前
Laravel vs ThinkPHP:框架选择终极指南
php·laravel
ICT系统集成阿祥7 小时前
VLAN划分与端口隔离详解
开发语言·php
郑州光合科技余经理10 小时前
海外O2O系统源码剖析:多语言、多货币架构设计与二次开发实践
java·开发语言·前端·小程序·系统架构·uni-app·php
globaldomain16 小时前
什么是用于长距离高速传输的TCP窗口扩展?
开发语言·网络·php
桌面运维家18 小时前
Win10打印机共享故障排查:权限与网络配置详解
开发语言·网络·php
xht083220 小时前
PHP vs C语言:核心差异全解析
c语言·开发语言·php