PHP中字符串类型与数值类型混合计算
来源:互联网 发布:wps输入数据自动计算 编辑:程序博客网 时间:2024/05/01 02:59
字符串转数值的规则
当一个字符串被当作一个数值来取值,其结果和类型如下:
如果该字符串没有包含 ‘.’,’e’ 或 ‘E’ 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。
该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 ‘e’ 或 ‘E’ 后面跟着一个或多个数字构成。
如下会被转成整数:
[+/-][0-9][*]
如下会被转成浮点型数:
[+/-][0-9][.][0-9][e/E][0-9][*]
示例
$r = '123' + 1;var_dump($r);// 输出结果 int(124)$r = '123.4' + 1;var_dump($r);// 输出结果 float(124.4)$r = '1.5e4' + 1;var_dump($r);// 输出结果 float(15001)$r = '123456789123456789' + 1;var_dump($r);// 输出结果 float(1.2345678912346E+17)$r = '123abc' + 1;var_dump($r);// 输出结果 int(124)$r = '123e1abc' + 1;var_dump($r);// 输出结果 float(1231)$r = '123.abc' + 1;var_dump($r);//输出结果 float(124)$r = '+123abc' + 1;var_dump($r);// 输出结果 int(124)$r = '-123abc' + 1;var_dump($r);// 输出结果 int(-122)$r = 'abc' + 1;var_dump($r);// 输出结果 int(1)
更好的方式
已经确定需要的是整数(浮点数),则可以使用intval()
(floatval()
)先将字符串转换成整数(浮点数),然后再与其他数值进行计算。
判断字符串是否为整数
HTTP GET/POST提交的数据,可以通过该方式进行校验。
$str = '123';$r = ''.intval($str) == $str; //需要将字符串转成整形然后再变回去,再和原字符串做比较var_dump($r);// 输出结果 true$str = '123abc';$r = ''.intval($str) == $str;var_dump($r);// 输出结果 false
参考
- String 浮点型
0 0
- PHP中字符串类型与数值类型混合计算
- 十六进制字符串与数值类型之间转换
- 十六进制字符串与数值类型之间转换
- 十六进制字符串与数值类型之间转换
- 字符串与数值类型的转化
- 数值类型、字符串
- Java中不同数值类型间转换与计算精度丢失问题
- Java中不同数值类型间转换与计算精度丢失问题
- JS混合类型的计算
- C/C++ 中 int/long/float/double数值类型 与 字符串 互相转换
- C/C++ 中 int/long/float/double数值类型 与 字符串 互相转换
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- C/C++中int/long/float/double数值类型与字符串互相转换
- C/C++中int/long/float/double数值类型与字符串互相转换
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- android onTouchListener中滑动时,x坐标和y坐标如何分布——轮播制作(二)
- iOS开发Xcode设置断点调试,但无法停在代码区
- 学生成绩排名--结构体的应用
- IntelliJ Idea搭建Groovy环境Hello World
- 算法的简单归类
- PHP中字符串类型与数值类型混合计算
- dubbo服务只注册不订阅
- 利用tableau数据可视化工具创建圆环图——初入门篇
- 怎么去理解Spring Aop
- 用git与github建立连接
- 百度地图--路线(步行)
- C语言----链表
- android 控件 recyclerview
- (iOS开发)计算时间差