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;
相关推荐
叠层归一研究院8 小时前
AGI 系统(五):多主体 AGI 网络 — 分布式符号边界上的时序差同构传播
分布式·php·agi
leoZ23110 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
qq_4523962313 小时前
第十二篇:《Istio 生产环境最佳实践与排错指南》
云原生·php·istio
不爱土豆唯爱马铃薯18 小时前
升级 AiPy Pro 2.0 后,我把安全中心这几项挨个打开了数据安全、沙盒权限、工作空间隔离——这些 2.0 新功能对科研协作场景的实际影响
网络·安全·php
MC皮蛋侠客19 小时前
TDengine C++ 系列(11):性能模型与调优——从测量到优化
c++·php·tdengine
郝学胜-神的一滴1 天前
系统设计 023:三大核心表Sharding设计思路与最优解决方案
java·开发语言·python·架构·php·软件开发
JaguarJack1 天前
Fiber 与 PHP 8.6 Polling API 异步初探
后端·php·服务端
BingoGo1 天前
Fiber 与 PHP 8.6 Polling API 异步初探
php
东宇科技2 天前
让网页执行cmd命令
php