|
当一个字符串被当作一个数值来取值,其结果和类型如下: 如果该字符串没有包含 ‘.’,’e’ 或 ‘E’ 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 来取值。其它所有情况下都被作为 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是强制转化为型进行比较)。 $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<$b; |