字符串和数字相加。没明白

echo 1+'1+2'.'
'; 输出 2
echo 1+'2+0'.'
'; 输出 3
echo 1+'0+2'; 输出 1

求解。

阅读 9.2k
5 个回答

字符串转数字
从头开始查找字符串中的数字部分,直到找到非数字为止,然后将找到的数字部分转int。
如果第一个字符就不是数字就返回0。
'123+1'找到123为止,然后转数字123
特殊情况:123e1,如果e的前后都是数字,则表示科学计数法,所以123e1都是数字

进行算术运行操作的时候,字符串转换为数字,PHPString 字符串去查找字符串转数字

string和int加的时候,string会隐式转成int ;

php在string转int时,是截止到第一个不是数字的字符为止,比如:

<?php
$str = '3+3';
echo (int)$str ; //结果是3 

$str = '33+3';
echo (int)$str . "\r\n"; //结果是33 

$str = '033+3';
echo (int)$str . "\r\n"; //结果是33 
当一个字符串被当作一个数值来取值,其结果和类型如下:

如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。

该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。

参见 PHP: String字符串 - 字符串转换为数值

新手上路,请多包涵

字符串转数字,不会进去运算的,除非是e。
字符串会找到第一个数字,然后就转成他,
所有"0+任何数字"=0
其他同理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题