一、隐式类型转换:
在PHP中进行运算时,PHP会自动在需要时将值从一个类型转换到另外一个类型,这种自动进行的类型转换叫做隐式类型转换。
二元算术运算符要求它的两个操作数都是相同的类型。
1.当两个操作数数的类型不同时的转换规则:
1.当第一个操作数是整型,第二个操作数是浮点型时:会将整型转换成浮点型。
2.当第一个操作数是整型,第二个操作数是字符串时:会先将字符串转换为数字,如果转换后的值为浮点型,则再将整型转换为浮点型。
3.当第一个操作数是浮点型,第二个操作数是字符串时:会将字符串转换成浮点型。
2.字符串连接符".",在连接字符串之前将两个操作数都转换为字符串。
3.字符串也可以转换成数字。
如果在字符串开头没有发现数字,则该字符串的数值就是0,如果字符串包括一个句点(.)(这个句点需要紧跟这个数字)或e,E,对该字符串求值则生成一个浮点数。
example:
1. "9 Lives" - 1 //结果为8(int)
2. "3.14 pies" * 2 //结果为6.28(float)
3. "9 Lives." - 1 //结果为8(int)
4 "9. Lives" - 1 //结果为8(float)
5. "1E3 points of light" + 1 //结果为1001(float)
6. "ada"-1 //结果为-1(int)
4.求模运算符(%):在运算之前,会先将它的两个操作数转换成整型,然后再运算。
二、自动递增和自动递减操作符(++,--):该运算符只对变量有效
1.对于纯数字:
1.如果将操作符放到操作数前面(++a,--b),它将返回操作数的新值(自增或自减之后的值)。
2.如果将操作符放到操作数后面(a++,b--),它将返回操作数的原值(自增或自减之前的值)。
2.对于字符串:
对一个字母字符进行递增操作会将它变成字母表的下一个字母,增加"z","Z","9"将绕回到"a","A","0",并且给它前面的字母递增1(就类似于进制系统中的进位)。
3.对于布尔值:
递增递减都不会改变原来的值。
4.对于NULL
递减不发生变化
递增变为1
运行结果:
在PHP中进行运算时,PHP会自动在需要时将值从一个类型转换到另外一个类型,这种自动进行的类型转换叫做隐式类型转换。
二元算术运算符要求它的两个操作数都是相同的类型。
1.当两个操作数数的类型不同时的转换规则:
1.当第一个操作数是整型,第二个操作数是浮点型时:会将整型转换成浮点型。
2.当第一个操作数是整型,第二个操作数是字符串时:会先将字符串转换为数字,如果转换后的值为浮点型,则再将整型转换为浮点型。
3.当第一个操作数是浮点型,第二个操作数是字符串时:会将字符串转换成浮点型。
2.字符串连接符".",在连接字符串之前将两个操作数都转换为字符串。
3.字符串也可以转换成数字。
如果在字符串开头没有发现数字,则该字符串的数值就是0,如果字符串包括一个句点(.)(这个句点需要紧跟这个数字)或e,E,对该字符串求值则生成一个浮点数。
example:
1. "9 Lives" - 1 //结果为8(int)
2. "3.14 pies" * 2 //结果为6.28(float)
3. "9 Lives." - 1 //结果为8(int)
4 "9. Lives" - 1 //结果为8(float)
5. "1E3 points of light" + 1 //结果为1001(float)
6. "ada"-1 //结果为-1(int)
4.求模运算符(%):在运算之前,会先将它的两个操作数转换成整型,然后再运算。
二、自动递增和自动递减操作符(++,--):该运算符只对变量有效
1.对于纯数字:
1.如果将操作符放到操作数前面(++a,--b),它将返回操作数的新值(自增或自减之后的值)。
2.如果将操作符放到操作数后面(a++,b--),它将返回操作数的原值(自增或自减之前的值)。
2.对于字符串:
对一个字母字符进行递增操作会将它变成字母表的下一个字母,增加"z","Z","9"将绕回到"a","A","0",并且给它前面的字母递增1(就类似于进制系统中的进位)。
3.对于布尔值:
递增递减都不会改变原来的值。
4.对于NULL
递减不发生变化
递增变为1
example:
<?php
/*
* 测试自增自减运算符在字符串,布尔值和NULL值的运算规则
*/
$a = "a";
echo (++$a)."\n";
$a = "z";
echo (++$a)."\n";
$a = "spaz";
echo (++$a)."\n";
$a = "K9";
echo (++$a)."\n";
$a = "42";
echo (++$a)."\n";
$a = true;
var_dump(++$a);
$a = true;
var_dump(--$a);
$a = false;
var_dump(++$a);
$a = false;
var_dump(--$a);
$a = NULL;
var_dump(++$a);
$a = NULL;
var_dump(--$a);
?>
运行结果: