算术运算符 1、算术运算符:+、-、*、/、%. 2、递增/递减运算符:如$a++,$a--,++$a,--$a. 实例代码如下:
三元运算符 (expr1) ? (expr2) : (expr3); 解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”. 以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”: 实例代码如下:
应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句.注意下列一串语句的理解: 实例代码如下:
这里不能理解为:当$str等于$_GET['abc'] 时,赋值为 'wangjinbo' 否则赋值为 'wjb';因为一:判断相等应该用==;因原二:三元算符的语法是如上所示:(expr1) ? (expr2) : (expr3),显然上面的二元,三元'wangjinbo'或'wjb'不能单独构成一个有意义的表达式;正确理解是:当$_GET['abc']为空(也就是否,PHP中'',null,0,undifine,都等效布尔值false)时,将$str赋值为'wangjinbo',否则赋值为'wjb'; 逻辑运算符: 实例代码如下:
细节:and && 都表示逻辑与 ,他们的区别在什么地方? 主要体现在优先级上面,and 的优先级 实例代码如下:
位运算符 位移在 PHP 中是数学运算.向任何方向移出去的位都被丢弃.左移时右侧以零填充,符号位被移走意味着正负号不被保留.右移时左侧以符号位填充,意味着正负号被保留.要用括号确保想要的优先级.例如 $a & $b == true 先进行比较再进行按位与;而 ($a & $b) == true 则先进行按位与再进行比较. 要注意数据类型的转换.如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作. PHP的ini设定error_reporting 使用了按位的值,提供了关闭某个位的真实例子.要显示除了提示级别之外的所有错误,php.ini 中是这样用的: E_ALL & ~E_NOTICE 具体运作方式是先取得 E_ALL 的值: 00000000000000000111011111111111 再取得 E_NOTICE 的值: 00000000000000000000000000001000 然后通过 ~ 将其取反: 11111111111111111111111111110111 最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位: 00000000000000000111011111110111 另外一个方法是用按位异或 XOR(^)来取得只在其中一个值中设定了的位:E_ALL ^ E_NOTICE error_reporting 也可用来演示怎样置位.只显示错误和可恢复错误的方法是:E_ERROR | E_RECOVERABLE_ERROR 也就是将 E_ERROR 00000000000000000000000000000001和 E_RECOVERABLE_ERROR 00000000000000000001000000000000 用按位或 OR(|)运算符来取得在任何一个值中被置位的结果: 00000000000000000001000000000001 Example #1 整数的 AND,OR 和 XOR 位运算符 实例代码如下:
以上例程会输出: --------- --------- -- --------- result value op test --------- --------- -- --------- Bitwise AND ( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101) ( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101) ( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101) ( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101) ( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101) Bitwise Inclusive OR ( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101) ( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101) ( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101) ( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101) (13 = 1101) = ( 8 = 1000) | ( 5 = 0101) Bitwise Exclusive OR (XOR) ( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101) ( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101) ( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101) ( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101) (13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)比较运算符 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行.此规则也适用于 switch 语句.当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对. 实例代码如下:
对于多种类型,比较运算符根据下表比较(按顺序). 比较多种类型 运算数 1 类型 运算数 2 类型 结果 null 或 string string 将 |