第十三课:运算符

第十三课:运算符



  在第九课我们学过了 PHP中的运算,学习中碰到的问题大家讨论热烈,特别是rq2004提出的“echo "a".$a+$b."a".($a+$b)+$a;”PHP会怎么计算的问题,以前学习PHP的人从来没有谁认真考虑过这样的事。虽然这样的运算在实际编程中不常用到,但是我们会员的这种学术精神可圈可点。随后的学习过程中大家要求掌握更多的相关知识,所以这一课我们更进一步探讨PHP中的运算符,让你掌握更多的运算知识。

  1。赋值运算符

  基本的赋值运算符是“=”。如果你认为这是一个等号,那就错了。它实际的意思是左边的操作数得到右边表达式的值。例如你可以用下面的方式做一些复杂的事情。例如13-1:

  $a = ( $b=4 )  + 5;  // 现在$a等于9,$b等于4 。


  除了基本的赋值运算符外,还有“复合运算符”。对于所有二进制数和字符串,允许对变量进行自我复合运算。例如13-2:
<? php
$a   =   3 ;
$a   += 5 ;   // 把$a 设成8,也就是 $a=$a+5。
 
$b   =   ' hi ' ;
$b   .=   ' 你好 ' ;   // 把$b设成“hi你好”,也就是 $b=$b.'你好'。
?>
 使用自我复合运算时可以明显提高编译效率。

  2。比较运算符

  比较运算符,如同它们名称所暗示的,允许对两个值进行比较。


表格: 比较运算符
$a == $b等于TRUE,如果 $a 等于 $b。
$a === $b全等TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)
$a != $b不等TRUE,如果 $a 不等于 $b。
$a <> $b不等TRUE,如果 $a 不等于 $b。
$a !== $b非全等TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)
$a < $b小与TRUE,如果 $a 严格小于 $b。
$a > $b大于TRUE,如果 $a 严格 $b。
$a <= $b小于等于TRUE,如果 $a 小于或者等于 $b。
$a >= $b大于等于TRUE,如果 $a 大于或者等于 $b。
 
  如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。

  例如13-3:
<? php
 
$userName   =   ' PHP中文论坛 ' ;
 
if $userName   ==   ' PHP中文社区 ' echo   ' 欢迎你回来! ' ;
else   echo   ' 用户名错误。 ' ;
 
?>
3。逻辑运算符

表格: 逻辑运算符
 
$a and $bAnd(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE
$a or $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $bXor(逻辑异或)TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $aNot(逻辑非)TRUE,如果 $a 不为 TRUE
$a && $bAnd(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE
$a || $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE
 
 “与”和“或”有两种不同形式运算符的原因是它们运算的优先级不同。

例子13-4:
<? php
 
$userName   =   ' PHP中文论坛 ' ;
$passWord   =   ' aaa999 ' ;
 
if  (  $userName   ==   ' PHP中文社区 '    &&   $passWord   ==   ' aaa999 '  )  echo   ' 欢迎你回来! ' ;
else   echo   ' 用户名或密码错误。 ' ;
 
?>
例子13-5:
<? php
 
$userName   =   ' phpNet ' ;
 
if  (  $userName   ==   ' PHP中文社区 '    ||   $userName   ==   ' phpNet '    ||   $userName   ==   ' phpNetCn '   )  echo   " 欢迎社区成员{$userName}回来! " ;
else   echo   ' 你不是本站会员,请注册后登录。 ' ;
 
?>
4。三元运算符

  请看表达式:
( expr1 )  ?  ( expr2 )  :  ( expr3 );

  若expr1运算结果为TRUE),则执行expr2,否则执行expr3。实际上它有点类似于if...else,但可以让程序更精简有效。例如13-6:
<? php
 
$n   =   20 ;   // 定义表格行数
 
echo   ' <table borer=1 width=300> ' ;
 
for  (  $i = 1 $i <= $n $i ++  ){
 
  
$bg   =  ( $i % 2 == 1 ?    ' #ccccff '    :    ' #99cc99 ' ;   // 利用三元运算符定义表格中行的背景色
 
  
echo   " <tr bgcolor=$bg><td>第{$i}行</td></tr> " ;
 
}
 
echo   ' </table> ' ;
 
?>
 例子中利用三元运算符定义表格行的背景色的代码,你能看懂吗?我看到有人实现这个效果的代码大段大段的,其实用上三元运算符只这行代码就足够了。解释一下吧:如果 $i%2==1 的结果为真,则$bg='#ccccff',否则$bg='#99cc99'

  
5。运算符优先级

  运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序。

  下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序

表格: 运算符优先级
 
非结合newnew
[array()
非结合++ --递增/递减运算符
非结合! ~ - (int) (float) (string) (array) (object) @类型
* / %算数运算符
+ - .算数运算符和字符串运算符
<< >>位运算符
非结合< <= > >=比较运算符
非结合== != === !==比较运算符
&位运算符和引用
^位运算符
|位运算符
&&逻辑运算符
||逻辑运算符
? :三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
and逻辑运算符
xor逻辑运算符
or逻辑运算符
,多处用到
  左联表示表达式从左向右求值,右联相反。

  6。错误控制运算符

  PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。例如13-7:
<? php
 
echo  @ $a ;   // 如果你去掉运算符“@”再试试看。
 
?>
如果你不想在网页中看到程序的出错信息,就在表达式前面加这个运算符“@”吧。

  PHP中还有执行运算符和位运算符,本课中讲述它们可能你接受起来有点难度,如果你想掌握它们可以看PHP手册和相关资料。好了,本课就讲到这里,好好练习吧。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值