php数值计算,php字符串自身计算及与数值计算用法详解

当一个字符串被当作一个数值来取值,其结果和类型如下:

如果该字符串没有包含 ‘.’,’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())先将字符串转换成整数(浮点数),然后再与其他数值进行计算。

一。PHP中数值型字符串相加

1.若两个字符串开头没有有效数值或不是数值型字符串,这两个字符串相加时都看成0;$a="abc";

$b="b01";

$a+$b是0

2.两个数值型字符串相加时,有效数字进行相加。$a="100";

$b="01a";

$a+$b=101;

3/如果字符串中带有‘.’,'e','E'时,按float型数字处理。$a="100";

$b="12.6a";

$a+$b=112.6;$a='10';

$b='12.3e3';

$a+$b同样为float型float(12310)

二.php中两个字符串相比较(< > ==);

1.php中两个字符串比较是否相等,一般不用(==),因为(==)会改变原有数据类型,而是用strcmp(str1,str2)系列函数strcmp($str1,$str2);(strcmp是强制转化为string型进行比较)。$a='123';

$b='123.';($b后多了一个小数点)

但是有(==)进行比较是结果却是true

var_dump($a==$b);

所以一般不用(==)进行字符串的比较。

另外,一个数字与一个字符串进行比较时,字符串会转化为int或float型(numberic_string含有‘.’,'e','E')。‘abc’转化为int(0);

‘12ab’转化为int(12);

‘12.3e3'转化为float(12300);

2.( > < )的比较

2-1:如果是两个字符串的比较,则逐个比较对应的字符的ascii码。

2-2:如果是数字与字符串进行比较,字符串先转化为数字,然后进行比较。

2-3:如果是两个数字型字符串(纯数字型字符串)进行比较,则这两个字符串首先转化为数字再进行比较。$a='100';

$b='20';

则$a>$b;

但是如$a=''100a;

$b='20';时,

结果为$a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值