php中运算符使用方法总结

算术运算符

1、算术运算符:+、-、*、/、%.

2、递增/递减运算符:如$a++,$a–,++$a,–$a.

实例代码如下:

  1. <!–?php 
  2. $a=10; 
  3. $b=5; 
  4. $c=$a++; //先赋值,后自增.$c=$a,$a=$a+1 
  5. $d=$b–; //先赋值,后自减.$d=$b,$b=$a-1 
  6. echo '$a='.$a."||".'$c='.$c.'
    '
    //$a=11,$c=10 
  7. echo '$b='.$b."||".'$d='.$d.'
    '
    //$b=4,$d=5 
  8. ?> 
  9. <!–?php 
  10. $a=10; 
  11. $b=5; 
  12. $c=++$a//先自增,后赋值.$a=$a+1,$c=$a 
  13. $d=–$b//先自减,后赋值.$b=$a-1, $d=$b 
  14. echo '$a='.$a."||".'$c='.$c.'
    '
    //$a=11,$c=11 
  15. echo '$b='.$b."||".'$d='.$d.'
    '
    //$b=4,$d=4 
  16. ?> 

三元运算符

(expr1) ? (expr2) : (expr3);

解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”.

以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:

实例代码如下:

  1. $a>$b ? print "Yes" : ""
  2. $a>$b ? '': print 'No'

应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句.注意下列一串语句的理解:

实例代码如下:

  1. $str = $_GET['abc'] ? 'wangjinbo' : 'wjb'

这里不能理解为:当$str等于$_GET['abc']  时,赋值为 'wangjinbo'  否则赋值为 'wjb';因为一:判断相等应该用==;因原二:三元算符的语法是如上所示:(expr1) ? (expr2) : (expr3),显然上面的二元,三元'wangjinbo'或'wjb'不能单独构成一个有意义的表达式;正确理解是:当$_GET['abc']为空(也就是否,PHP中'',null,0,undifine,都等效布尔值false)时,将$str赋值为'wangjinbo',否则赋值为'wjb';

逻辑运算符:

实例代码如下:

  1. $a=10;$b=7; 
  2. if($a++>8 || $b++>7){ //$a++>8为真,$b++>7这个就不执行了 
  3. echo 'OK!'
  4. echo 'a='.$a.'b='.$b// 输出OK,a=11,b=7 
  5. 改变一下 
  6. $a=10;$b=7; 
  7. if($a++>10 && $b++>7){ //$a++>8为假,$b++>7这个就不执行了 
  8. echo 'OK!'
  9. echo 'a='.$a.'b='.$b// a=11,b=7 

细节:and && 都表示逻辑与 ,他们的区别在什么地方?

主要体现在优先级上面,and 的优先级

实例代码如下:

  1. and< = <&& 
  2. or < = < || 
  3. $a=false || true; //&& > = > and ;先比较false || true,再赋值 
  4. $b=false or true; //|| > = > or ;先赋值$b=false,再比较,所以结果是false 
  5. var_dump($a,$b); //bool(true) bool(false) 

位运算符

位移在 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 位运算符

实例代码如下:

  1. <!–?php 
  2. /* 
  3.  * Ignore the top section, 
  4.  * it is just formatting to make output clearer. 
  5.  */ 
  6. $format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)' 
  7.         . ' %3$s (%4$2d = %4$04b)' . "n"
  8. echo <<<eoh </eoh 
  9.  ———     ———  — ——— 
  10.  result        value      op test 
  11.  ———     ———  — ——— 
  12. EOH; 
  13.  
  14. /* 
  15.  * Here are the examples. 
  16.  */ 
  17. $values = array(0, 1, 2, 4, 8); 
  18. $test = 1 + 4; 
  19. echo "n Bitwise AND n"
  20. foreach ($values as $value) { 
  21.     $result = $value & $test
  22.     printf($format$result$value'&'$test); 
  23. echo "n Bitwise Inclusive OR n"
  24. foreach ($values as $value) { 
  25.     $result = $value | $test
  26.     printf($format$result$value'|'$test); 
  27. echo "n Bitwise Exclusive OR (XOR) n"
  28. foreach ($values as $value) { 
  29.     $result = $value ^ $test
  30.     printf($format$result$value'^'$test); 
  31. ?>  

以上例程会输出:

 ———     ———  — ———
 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. <!–?php 
  2. var_dump(0 == "a"); // 0 == 0 -> true 
  3. var_dump("1" == "01"); // 1 == 1 -> true 
  4. var_dump("10" == "1e1"); // 10 == 10 -> true 
  5. var_dump(100 == "1e2"); // 100 == 100 -> true 
  6. switch ("a") { 
  7. case 0: 
  8.     echo "0"
  9.     break
  10. case "a"// never reached because "a" is already matched with 0 
  11.     echo "a"
  12.     break
  13. ?> 

对于多种类型,比较运算符根据下表比较(按顺序).

比较多种类型 运算数 1 类型 运算数 2 类型 结果 nullstring stringNULL 转换为 "",进行数字或词汇比较 boolnull 任何其它类型 转换为 boolFALSE < TRUE object object 内置类可以定义自己的比较,不同类不能%

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » php中运算符使用方法总结

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡