当前位置:  首页>> 技术小册>> PHP8入门与项目实战(2)

3.8.6 按位运算符
按位运算符是把整数按照“位”的单位来进行处理。按位运算符的含义如表3-5所示。

【例3.20】

  1. <?php
  2. $a = 7; // 7的二进制代码是111
  3. $b = 4; // 4的二进制代码是100
  4. echo '$a & $b = ' . ($a & $b) . '<br/>'; // 运算结果为二进制代码100,即4
  5. echo '$a | $b = ' . ($a | $b) . '<br/>'; // 运算结果为二进制代码111,即7
  6. echo '$a ^ $b = ' . ($a ^ $b) . '<br/>'; // 运算结果为二进制代码011,即3
  7. ?>

本程序运行结果如图3-21所示。

3.8.7 否定控制运算符
否定控制运算符用在“操作数”之前,用于对操作数值进行真假的判断。它包含一个逻辑否定运算符和一个按位否定运算符。否定控制运算符的含义如表3-6所示。

3.8.8 三元运算符
三元运算符作用在三个操作数之间。这样的操作符在PHP中只有一个,即“?:”,语法形式如下:

  1. expr1)?(expr2):(expr3

如果expr1成立,就执行expr2,否则执行expr3。

【例3.21】

  1. <?php
  2. $a = 5;
  3. $b = 6;
  4. echo ($a > $b) ? "大于成立" : "大于不成立"; echo "<br/>"; //大于不成立
  5. echo ($a < $b) ? "小于成立" : "小于不成立"; echo "<br/>"; //小于成立
  6. ?>

本程序运行结果如图3-22所示。

3.8.9 运算符的优先级和结合规则
运算符的优先级和结合其实与正常的数学运算符的规则十分相似。

·加减乘除的先后顺序与数学运算中的完全一致。
·对于括号,先括号内再括号外。
·对于赋值,由右向左运行,即依次从右边向左边的变量进行赋值。

3.9 合并运算符和组合运算符
合并运算符“??”用于判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。

语法格式如下:

  1. (expr1) ? ? (expr2)

如果表达式expr1为真,就返回expr1的值;如果表达式expr1为假,就返回expr2。
【例3.22】(实例文件:源文件\ch03\3.22.php)

  1. <?php
  2. $a = '酒店还有房间';
  3. $b = $a ?? '酒店已经没有房间';
  4. echo $b;
  5. ?>

代码运行结果如图3-23所示。

组合运算符用于比较两个表达式$a和$b,$a小于、等于或大于$b分别返回-1、0或1。

【例3.23】

  1. <?php
  2. // 整型比较
  3. echo( 5 <=> 5);echo "<br/>";
  4. echo( 5 <=> 6);echo "<br/>";
  5. echo( 6 <=> 5);echo "<br/>";
  6. // 浮点型比较
  7. echo( 5.6 <=> 5.6);echo "<br/>";
  8. echo( 5.6 <=> 6.6);echo "<br/>";
  9. echo( 6.6 <=> 5.6);echo "<br/>";
  10. echo(PHP_EOL);
  11. // 字符串比较
  12. echo( "a" <=> "a");echo "<br/>";
  13. echo( "a" <=> "b");echo "<br/>";
  14. echo( "b" <=> "a");echo "<br/>";
  15. ?>

代码运行结果如图3-24所示。