一.算数运算符
1. 加减乘除余
2.自增自减 ++ 、--
- 常规对数字使用
- 对字符串使用,只能自增,自增效果规则和纯数字的自增规则一样
$v1 = "a";
$v1 ++; //b
$v2 = "A";
$v2 ++; //B
$v3 = "abc";
$v3 ++; //abd
$v4 = "xyz";
$v4 ++; //xza
$v5 = "xyzz";
$v5 ++; //xzaa
$v6 = "zzz";
$v6 ++; //aaa
$v7 = "abc9";
$v7 ++; //abd0
$v8 = "9z";
$v8 ++; //10a
- 布尔值自增自减都无效
- null自增结果是1,自减无效
二.比较运算符
>=、<=、>、<、==、===、!=、!==
1.布尔值比较,永远都是 true > false
2.字符串比较,对于两边的字符,从前往后、一个一个的取出字符进行比较。字母大于任何的数字。
"abc" > "c"; //false
//取a,取c,a < c,false,终
"abc" > "ab1efefrg" //true
//1.取a,取a,a=a,往后;2.取b,取b,b=b,往后;3.取c,取1,c > 1,true,终
(字符的比较,实际上就是字符编码的比较,理论上中文也是可以比较的?记住几个特殊的字符编码。数字0:48;大写A:65;小写a:97)
三.逻辑运算符
- 与、或、非
-
短路与、短路或现象,我们利用这种现象,将简单的运算放在前面,复杂的运算放在后面。优化性能。
四.连接、赋值、条件运算符
1.连接运算符 .
2.连接运算符 .=
两边是字符串就连起来,不是的话,就转换成字符串再连起来
3.赋值运算符(基本) =
4.赋值运算符(衍生)+= 、 -= 、 *= 、 /= 、 %= 、 .=
5.三元运算符,条件?执行1 : 执行2
五.位运算符
- “位”就是二进制的每一个位,一个整数由32个位组成
- 位运算符是仅仅针对整数进行的,运算结果还是一个数字
- 有这么 4个基本运算符 ,&(按位与)、|(按位或)、~(按位非)、^(按位异或,相同为0,不同为1)
- 非基本运算符
1.按位左移,<<,左移多少位,左边溢出的不管,右边空出来的补0
2.按位有义,>> - 原码,补码,反码
1.源码,二进制数字最左边一位是符号位。整数0,负数1。所以表示一个整数,其实只有31位可用?//5的原码 00000000 00000000 00000000 00000101 //-3的原码 10000000 00000000 00000000 00000011
2.反码。正数反码是它本身;负数反码符号位不变,其他位取反
3.补码。正数补码也是它本身!负数补码符号位不变,而其他位取反后加1、即反码加1
(计算机内部运算全部用补码进行运算,并且运算的时候符号位不再区分,也参与运算)
六.管理一组开关状态
现实中很多数据只有两种情况,是或者否,对应我们的布尔值。所以我们其实是管理若干个只有两个状态的数据符号。
管理目标:使用一个变量就可以表达若干个数据的当前状态,这里具有三个目标
- 通过该变量,可以获取任何一个数据的当前状态
- 通过该变量,可以“关闭”该数据状态
- 通过该变量。可以“开启”该数据状态
以下以5个灯泡为例,每个灯泡为一组数据,每个灯泡都有开和关两种状态。
//设定5个常量,对应每一个灯泡。观察其二进制上的位数状态,设定 1 是亮, 0 是灭
define("D1", 1); //对应二进制00000001
define("D2", 2); //对应二进制00000010
define("D3", 4); //对应二进制00000100
define("D4", 8); //对应二进制00001000
define("D5", 16); //对应二进制00010000
//定义一个变量,代表这5个灯泡的任意状态组合
$status = 10; //对应二进制00001010
//它表示第2个、第4个灯泡亮
1.获取当前5个灯泡的状态
//进行运算得出灯泡状态
//第1个灯泡
if($status & D1 > 0){
echo "灯泡1亮";
}else{
echo "灯泡1灭";
}
//以同样的运算可以得出其他4个灯泡的状态
//整理成一个函数
function status(){
for($i = 1; $i < 6; $i ++){
$s = "D" . $i;
if((constant($s) & $GLOBALS['status']) > 0){
echo "灯泡" . $i . "是亮的 <br>";
}else{
echo "灯泡" . $i . "是灭的 <br>";
}
}
}
//运行可得出相应的结果
status(10);
2.打开任意一个灯泡
//打开灯1
$status = $status | D1;
//验证
status(10);
//打开灯5
$status = $status | D5;
//验证
status(10);
3.关闭任意一个灯泡
//关闭灯2
$status = $status & (~D2);
//验证
status(10);
七.数组运算符
- 数组联合运算符,+,将右边的数组加到左边,得到一个新的数组;如果有重复的键,以左边的为准。
$arr1 = array('a'=>10, 'b'=>10, 'c'=>30);
$arr2 = array('a'=>40, 'b'=>50, 'd'=>60);
$arr = $arr1 + $arr2;
print_r($arr1);
- 运算符==,键名键值相同即可true,顺序不必相同
- 运算符===,要求顺序也必须相同
- 运算符!=,不要求顺序
- 运算符!==,要求顺序
八.错误控制运算符
通常就用开一个地方而已啦,链接数据库时
$link = @$my_sqli("数据库地址", "用户", "密码")
用以链接失败时,屏蔽该失败的错误提示
九.运算符优先级
所有运算符都是有优先级的,嘛,这个太多了,全记住太捉急了,记住重要的。
- 括号优先