PHP基础教程三之运算符
本节讲解的内容前言 PHP的运算符是在php基础中必须要掌握的一个技能,它是php数据处理的桥梁,数据的各种运算都要用到运算符,比如加、减、乘、除,与、或等运算。 算术运算符 算术运算符:就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。 算术的运算符分类: -$a 取反,$a的负值 $a = -1; echo -$a; -----结果----- 1
$a + $b 加法 $a和$b的和 $a = 12; $b = 12; $res = $a + $b; echo $res; -----结果----- 24
$a - $b 减法$a和$b的差 $a = 12; $b = 6; $res = $a - $b; echo $res; -----结果----- 6
$a * $b 乘法 $a和$b的积 $a = 2; $b = 3; $res = $a * $b; echo $res; -----结果----- 6
$a / $b 除法 $a和$b的商 $a = 12; $b = 6; $res = $a / $b; echo $res; -----结果----- 2
$a % $b 取模 $a和$b的余数; $a = 3; $b = 2; $res = $a % $b; echo $res; -----结果----- 1
递增、递减运算符 ++$a $a = 1; $b = ++$a;//先++,在进行赋值运算,等价于$a = $a + 1; $b = $a; echo $b . ' ' . $a; -----结果----- $b = 2 $a = 2
$a++ $a = 1; $b = $a++;//先赋值,在进行++运算,等价于$b = $a; $a = $a + 1; echo $b . ' ' . $a; -----结果----- $b = 1 $a = 2
减减的情况和上面的情况一样。 赋值运算符 基本的赋值运算符是“=”,它实际上意味着把右边表达式的值赋给左边的运算数。 $a = 1; $b = 'string';
还有情况是 +=、-=、**/=**等 $a = 1; $a += 2;//等价于$a = $a + 2; echo $a; -----结果----- 3
字符串运算符 有两个字符串。运算符是(“.”),它返回其左右参数连接后的字符串。 $a = 1; $b = 2; echo '$a = ' . $a . ' $b = ' . $b; -----结果----- $a = 1 $b = 2;
比较运算符 比较运算符是比较两个变量的情况,是否数值一样,是否数据类型一样,而比较出来的结果大多数是布尔类型的。 常见的比较运算符是: $a = 2; $b = '2'; var_dump($a == $b); //判断两个数值是否相等,比较的时候会进行类型转换。 -----结果----- bool(true) var_dump($a === $b);//判断数值和类型是否相等,当时全等比较的时候,不会进行类型转换。 -----结果----- bool(false)
位运算符 位运算符允许对整型数中指定的位以二进制的方式进行求值和操作。 在这之前我们先来说一说二进制 二进制简单介绍 在电脑中所有数存错在内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。 什么是二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 十进制转换成二进制:“除以2取余,逆序排列”(除二取余法) 商 余数 3 / 2 = 1.....1 1 / 2 = 0.....1 二进制(逆序排列): 11 12 / 2 = 6....0 6 / 2 = 3.....0 3 / 2 = 1.....1 1 / 2 = 0.....1 二进制: 1100 15 / 2 = 7....1 7 / 2 = 3.....1 3 / 2 = 1.....1 1 / 2 = 0.....1 二进制: 1111
二进制转换成十进制:“按权展开求和” 1111 = 1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 15 10 = 0 * 20 + 1 * 21 = 2 计算机中的符号位有三种表达形式: 在进行位运算时,都是转换成补码进行运算的。 正数的二进制表示是二进制的最前面有一个0表示正数 正数的原码,反码,补码都一样(三码合一) 负数的二进制表示是二进制的最前面有一个1表示负数。 负数的原码是用公式求得的二进制数,反码是除了符号位,其他的都取反(1变0,0变1),补码是反码 + 1。 比如-1 原码 10000000 00000000 00000000 00000001 反码 11111111 11111111 11111111 11111110 取反 补码 11111111 11111111 11111111 11111111 加1
至于为什么要写32位,我的理解是:整型占4个字节,每个字节8位,总共32位,其中一个符号位。 二进制的简单介绍就到这里 PHP中位运算符的分类 示例: 与(1 1 = 1; 1 0 = 0;0 0 = 0) $a = 1 & 2;//进行“与”运算 两个都为1的时候为1,其他为0 // 1的补码 // 00000000 00000000 00000000 00000001 // 2的补码 // 00000000 00000000 00000000 00000010 // 结果 // 00000000 00000000 00000000 00000000 == 0 echo $a; -----结果----- 0
或(1 1 = 1;1 0 = 1;0 0 = 0) $a = 1 | 2;//进行“或”运算 至少有一个为1的时候为1,其他为0 // 1的补码 // 00000000 00000000 00000000 00000001 // 2的补码 // 00000000 00000000 00000000 00000010 // 结果 // 00000000 00000000 00000000 00000011 == 3 echo $a; -----结果----- 3
异或(1 0 = 1; 1 1 = 0; 0 0 = 1) $a = 3 ^ 2;//进行“异或”运算 一个为1,一个为0的时候为1,其他为0 // 1的补码 // 00000000 00000000 00000000 00000011 // 2的补码 // 00000000 00000000 00000000 00000010 // 结果 // 00000000 00000000 00000000 00000001 == 1 echo $a; -----结果----- 1
取反(1 = 0; 0 = 1)注意符号位的变化。 $a = ~2;//进行“取反”运算 1变0,0变1 // 2的二进制 // 00000000 00000000 00000000 00000010 // 11111111 11111111 11111111 11111101 前面一个1,是负数 // 反码 // 11111111 11111111 11111111 11111100 // 原码 // 10000000 00000000 00000000 00000011 == -3 echo $a; -----结果----- -3
左移(将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)) 左移时右侧以零填充,符号位被移走意味着正负号不被保留。 $a = 1; // 二进制: // 00000000 00000000 00000000 00000001 // 左移时右侧以零填充,符号位被移走意味着正负号不被保留。 // 00000000 00000000 00000000 00000100 == 4 echo $a << 2;//将 $a 中的位向左移动2次 -----结果----- 4
右移时左侧以符号位填充,意味着正负号被保留。 $a = 4; // 右移时左侧以符号位填充,意味着正负号被保留。 // 00000000 00000000 00000000 00000100 // 00000000 00000000 00000000 00000001 == 1 echo $a >> 2; -----结果----- 1
到这里位运算符算术基本说完了…… 逻辑运算符 逻辑运算符也就是判断逻辑,它的返回结果一般是布尔类型,像与或非等;而PHP中的逻辑运算符有: 逻辑与(当表达式的两边都为true的时候结果为真) 两个&符号: $a = 2; $b = 3; if($a > 1 && $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true; echo '与'; } -----结果----- 与
一个&符号: $a = 2; $b = 3; if($a > 1 & $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true; echo '与'; } -----结果----- 与
区别:两个&时:如果有一个逻辑判断表达式为假,则后面的逻辑运算就不会执行,俗称短路现象。 一个&:两边的都会判断。不管是真是假。 逻辑或(当左右两个表达式其中有一个是true的时候,为真) 两个|符号: $a = 2; $b = 4; if($a > 1 || $b < 3){ //左边的为true,右边的为false; echo '或'; } -----结果----- 或
一个|符号: $a = 2; $b = 4; if($a > 1 | $b < 3){ //左边的为true,右边的为false; echo '或'; } -----结果----- 或
区别:两个|时:如果有一个逻辑判断表达式为真,则后面的逻辑运算就不会执行,短路现象。 一个|:两边的都会判断。不管是真是假。 非(!true = false; !false = true) $a = true; var_dump(!$a); -----结果----- bool(false)
三元运算符 语法为:条件表达式?表达式1:表达式2。 说明:问号前面的位置是判断的条件PHP运算符,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。 其逻辑为:“如果为真执行第一个,否则执行第二个。” $a = 456; $b = $a > 10 ? true : false; //问号前面的结果为真,执行第一个true; var_dump($b); -----结果----- bool(true);
三元运算符可以说是if…else的简化版,在以后的开发中也会经常使用到的。 错误控制运算符 介绍: PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉 当你不想用户看到错误信息可以使用。 总结 说了这么多总算把运算符的大部分都说完了,其中还有数组运算符,类型运算符等,在数组和对象的时候会说。 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |