第十三课:运算符

    技术2022-05-11  69

    第十三课:运算符

      在第九课我们学过了 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手册和相关资料。好了,本课就讲到这里,好好练习吧。 

    最新回复(0)