PHP 7.1 A non-numeric value encountered 错误原因和解决方法

2018-03-2005:45:33后端程序开发Comments3,203 views字数 689阅读模式

php升级到 PHP 7.1 之后,经常收到 A non-numeric value encountered 的 warning 信息。比如下面这段代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html

$a = '123a';
$b = 'b456';

echo $a+$b;

PHP 7.1 新 E_WARNING

这是 PHP7.1 新增的 waring 信息,官方的解释是:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html

New E_WARNING and E_NOTICE errors have been introduced when invalid strings are coerced using operators expecting numbers (+ - * / ** % << >> | & ^) or their assignment equivalents. An E_NOTICE is emitted when the string begins with a numeric value but contains trailing non-numeric characters, and an E_WARNING is emitted when the string does not contain a numeric value.

在使用 (+ – * / ** % << >> | & ^) 这些运算操作符时,例如 a+b,如果 a(123a) 和 b(b456) 包含非数字字符时,就会有 A non-numeric value encountered 警告。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html

解决方法

对于这种问题,首先应该在代码逻辑查看,为何会出现混合数值,检查哪里导致出现混合数值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html

对于(+ – * / ** % << >> | & ^) 的运算,可以使用强制类型转换方法 (intval),把字符串转换成数字:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html

$a = '123a';
$b = 'b456';

echo intval($a)+intval($b);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/2178.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/2178.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定