为什么PHP中会输出2?为什么字符串跟整数可以相加???

代码是这样的………

echo "1"+1;

求解!

第1个回答  推荐于2017-11-27
这是php的自动类型转换,指定义变量时不需要指定变量的数据类型,PHP会根据具体引用变量的具体应用环境,将变量转换为合适的数据类型。在对变量进行赋值操 作的时候,经常会用到自动类型转换,自动类型转换主要包括如下两种方式。
1.直接对变量的赋值操作
直接对变量的赋值操作是自动类型转换最简单的应用,变量的数据类型由赋予的值决定。也就是说,当把一个字符串类型的数据赋值给变量时,该变量就是一 个字符串类型的变量;当把一个整型数据赋值给变量时,该变量就是一个整型的变量。实际上,2.3.1节的例子2应用的就是自动类型转换。由于这种方式的自 动类型转换比较简单,这里就不再给出示例程序了。
2.运算式结果对变量的赋值操作
自动类型转换的第二种应用方式是将一个运算式的结果赋值给一个变量。这种自动类型转换方式又可分为以下两种情况。
1)运算数为同一数据类型
这种情况处理起来比较简单,由于参与运算的所有运算数都是同一数据类型,所以被赋值的变量也属于这种类型。例如下面给出的代码:
$a= 1.23232;

$b= 2.23;

$c = $a + $b;

变量a与变量b都是浮点型变量,这两个变量进行相加运算并将运算结果赋值给变量c,那么这时 候,变量c就成为了一个浮点型变量。
2)运算数为不同数据类型
如果所有运算数都是数字,将选取占用字节最长的一种运算数的数据类型作为基准数据类型;如果运 算数为字符串,将该字符串转型为数字然后再进行求值运算。字符串转换为数字的规定为:如果字符串以数字开头,只取数字部分而去除数字后面部分,根据数字部 分构成决定转型为整型数据还是浮点型数据;如果字符串以字母开头,直接将字符串转换为零。例如下面给出的代码:
$a= 1 + 1.23;

$b= 2 + "3.14";

$c= 3 + "abc";

在第1个赋值运算式中,运算数包含了整型数字1和浮点型数字1.23,根据规定取浮点型数据类 型作为基准数据类型。赋值后变量a的数据类型为浮点型。
在第2个赋值运算式中,运算数包含了整型数字2和字符串型数据"3.14",首先将字符串转换 为浮点型数据3.14,然后再进行加法运算。赋值后变量b的数据类型为浮点型。
在第3个赋值运算式中,运算数包含了整型数字3和字符串型数据"abc",首先将字符串转换为 整型数字0,然后再进行加法运算。赋值后变量c的数据类型为整型。本回答被提问者和网友采纳
相似回答