1.报错背景
Notice: A non well formed numeric value encountered。在使用(+ - * / ** % << >> | & ^) 运算时,例如a+b,如果a是开始一个数字值,但包含非数字字符(123a),b不是数字值开始时(b456),就会有A non-numeric value encountered警告。
2.解决方案,字符串转数值
$str = '1px'; echo intval($str);//1 echo rtrim($str, 'px');//1
以上是简单的转数值方法,当然还有其他的方法。
2.1number_format()
用于将字符串转换为数字。它会在成功时返回格式化的数字,否则会在失败时给出E_WARNING。
$num = "1000.314"; // 使用number_format()函数将字符串转换为数字,输出1,000 echo number_format($num), "\n"; // 函数的作用是:将字符串转换为数字,输出1,000.31 echo number_format($num, 2);
2.2类型转换
直接将字符串转换为float,double或integer基本类型。这是将字符串转换为数字而不使用任何函数的最佳方法。
$num = "1000.314"; // 使用int类型转换,输出1000 echo (int)$num, "\n"; // 使用float 类型转换,输出1000.314 echo (float)$num, "\n"; // 使用double 类型转换,输出1000.314 echo (double)$num;
2.3intval()和floatval()函数
可用于将字符串分别转换为其对应的整数和浮点值。
$num = "1000.314"; // intval函数的作用是:将字符串转换为整数,输出1000 echo intval($num), "\n"; // floatval函数的作用是:将字符串转换为浮点数,输出1000.314 echo floatval($num);
2.4添加0或执行数学运算
通过在字符串中添加0,也可以将字符串编号转换为整数或浮点数。执行数学运算时,字符串将隐式转换为整数或浮点数。
$num = "1000.314"; // 对隐式类型转换执行数学运算,输出1000.314 echo $num + 0, "\n"; // 对隐式类型转换执行数学运算,输出1000.314 echo $num + 0.0, "\n"; // 对隐式类型转换执行数学运算,输出1000.314 echo $num + 0.1;