PHP如何在数学运算中绕过字符串?

时间:2016-01-20 11:28:40

标签: php string

$str = 'we123'+'123we'+'we'+'123';

echo $str;提供输出246

$str = 'we123'-'123we'-'we'-'123';

输出为-246

$str = 'we123'*'123we'*'we'*'123';

输出为0

在此操作过程中,我没有收到任何warningnotice

但是在分工操作中,

$str = 'we123'/'123we'/'we'/'123';

给予,

  

警告:除以零

非常感谢您的帮助。

提前致谢:)

1 个答案:

答案 0 :(得分:3)

这是PHP的工作方式,请看PHP string conversion。从这个页面引用:

  

在数值上下文中计算字符串时,结果值和类型确定如下。

     

如果字符串不包含任何字符'。','e'或'E',并且数值适合整数类型限制(由PHP_INT_MAX定义),则字符串将被计算为整数。在所有其他情况下,它将被评估为浮动。

     

该值由字符串的初始部分给出。如果字符串以有效数字数据开头,则这将是使用的值。否则,该值将为0(零)。有效数字数据是可选符号,后跟一个或多个数字(可选地包含小数点),后跟可选指数。指数是'e'或'E',后跟一个或多个数字。

您的字符串在数字上下文中进行评估,因此:

'we123' - 变为0,'123we' - 变为123,'we' - 变为0,'123' - 变为123

然后计算0/123/0/123按预期将除以零。