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;
相关推荐
xiangzhihong81 小时前
放生小龙虾,OpenClaw 安全卸载指南
服务器·安全·php
咖啡续命又一天1 小时前
PHP 8.2 (Windows) 安装 Redis 扩展最新教程
windows·redis·php
菩提小狗1 小时前
第22天:安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引_笔记|小迪安全2023-2024|web安全|渗透测试|
数据库·安全·php
橙汁味的风1 小时前
1计算机网络引言
开发语言·计算机网络·php
M158227690552 小时前
SG-EIP-TCP-210 EtherNet/IP 转 ModbusTCP 网关 —— 工业异构网络互联的全能桥梁
网络·tcp/ip·php
Data_Journal2 小时前
如何将网站数据抓取到 Excel:一步步指南
大数据·开发语言·数据库·人工智能·php
m0_738120722 小时前
网络安全编程——PHP基础Cookie详细讲解
后端·安全·web安全·前端框架·php
牢七2 小时前
Slim-4.x php审计 前言篇
开发语言·php
csdn_life183 小时前
# Debian 10 升级到 Debian 13 指南
运维·debian·php
jiang_changsheng3 小时前
VMware 虚拟机无法上网排查解决教程
开发语言·网络·php