You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PHP版本后出现Deprecated错误的解决方法及原因

错误原因

PHP 8.0及后续版本(包括8.1)收紧了类型转换的规则,intdiv()函数要求两个参数必须是整数类型。在PHP 7.4及更早版本中,传入浮点数会被自动隐式截断为整数(比如13.5会被转成13),但从PHP 8.0开始,这种无明确声明的隐式转换会触发「精度丢失」的弃用警告,到PHP 8.1直接抛出Deprecated Functionality异常。

解决方法

核心是显式将浮点数转换为整数,匹配intdiv()的参数要求,同时保留原逻辑:

  • 方式一:使用强制类型转换,直接截断浮点数的小数部分,和你原代码的隐式转换逻辑完全一致:
echo ((float)13.5 + intdiv((int)13.5, (int)10) * (float)2.5 / (int)12);
  • 方式二:如果需要更清晰的语义(比如处理负数场景时明确向下取整),可以用floor()函数后再转整数:
echo ((float)13.5 + intdiv((int)floor(13.5), (int)10) * (float)2.5 / (int)12);

内容的提问来源于stack exchange,提问作者m2dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:42:06