设为首页收藏本站language 语言切换
查看: 1337|回复: 0
收起左侧

PHP语言参考 - 运算符

[复制链接]
发表于 2010-2-24 13:38:46 | 显示全部楼层 |阅读模式
<DIV class=chapter lang=zh-cn><DIV class=titlepage><DIV><DIV><H1><A name=language.operators></A>第 15 章 运算符</H1></DIV></DIV></DIV><H2>目录</H2><DL><DT><U><FONT color=#000099>运算符优先级</FONT></U><DT><U><FONT color=#000099>算术运算符</FONT></U><DT><U><FONT color=#000099>赋值运算符</FONT></U><DT><U><FONT color=#000099>位运算符</FONT></U><DT><U><FONT color=#000099>比较运算符</FONT></U><DT><U><FONT color=#000099>错误控制运算符</FONT></U><DT><U><FONT color=#000099>执行运算符</FONT></U><DT><U><FONT color=#000099>递增/递减运算符</FONT></U><DT><U><FONT color=#000099>逻辑运算符</FONT></U><DT><U><FONT color=#000099>字符串运算符</FONT></U><DT><U><FONT color=#000099>数组运算符</FONT></U><DT><U><FONT color=#000099>类型运算符</FONT></U></DT></DL><>运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。所以可以认为函数或任何会返回一个值(例如 print)的结构是运算符,而那些没有返回值的(例如 echo)是别的东西。 </P><>有三种类型的运算符。第一种是一元运算符,只运算一个值,例如 !(取反运算符)或 ++(加一运算符)。第二种是有限二元运算符,PHP 支持的大多数运算符都是这种。列表见下节<A title=运算符优先级 href="http://www.php.net/manual/zh/language.operators.php#language.operators.precedence"><U><FONT color=#000099>运算符优先级</FONT></U></A>。 </P><>第三种是三元运算符:?:。它应该被用来根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序路线中选择。把整个三元表达式放在扩号里是个很好的主意。 </P><DIV class=sect1 lang=zh-cn><DIV class=titlepage><DIV><DIV><H1><A name=language.operators.precedence></A>运算符优先级</H1></DIV></DIV></DIV><>运算符优先级指定了两个表达式绑定得有多&#8220;紧密&#8221;。例如,表达式 <VAR>1 + 5 * 3</VAR> 的结果是 <VAR>16</VAR> 而不是 <VAR>18</VAR> 是因为乘号(&#8220;*&#8221;)的优先级比加号(&#8220;+&#8221;)高。必要时可以用括号来强制改变优先级。例如:<VAR>(1 + 5) * 3</VAR> 的值为 <VAR>18</VAR>。如果运算符优先级相同,则使用从左到右的左联顺序。 </P><>下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。 <DIV class=table><A name=id2657982></A><><B>表 15.1. 运算符优先级</B></P><DIV class=table-contents><TABLE summary=运算符优先级 border=1><COLGROUP><COL><COL></COLGROUP><THEAD><TR><TH>结合方向</TH><TH>运算符</TH><TH>附加信息</TH></TR></THEAD><TBODY><TR><TD>非结合</TD><TD>new</TD><TD><A title=new href="http://www.php.net/manual/zh/language.oop5.basic.php#language.oop5.basic.new"><U><FONT color=#000099>new</FONT></U></A></TD></TR><TR><TD>左</TD><TD>[</TD><TD><A href="http://www.php.net/manual/zh/function.array.php"><U><FONT color=#000099>array()</FONT></U></A></TD></TR><TR><TD>非结合</TD><TD>++ --</TD><TD><A title=递增/递减运算符 href="http://www.php.net/manual/zh/language.operators.increment.php"><U><FONT color=#000099>递增/递减运算符</FONT></U></A></TD></TR><TR><TD>非结合</TD><TD>! ~ - (int) (float) (string) (array) (object) @</TD><TD><A title=第 11 章 类型 href="http://www.php.net/manual/zh/language.types.php"><U><FONT color=#000099>类型</FONT></U></A></TD></TR><TR><TD>左</TD><TD>* / %</TD><TD><A title=算术运算符 href="http://www.php.net/manual/zh/language.operators.arithmetic.php"><U><FONT color=#000099>算数运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>+ - .</TD><TD><A title=算术运算符 href="http://www.php.net/manual/zh/language.operators.arithmetic.php"><U><FONT color=#000099>算数运算符</FONT></U></A>和<A title=字符串运算符 href="http://www.php.net/manual/zh/language.operators.string.php"><U><FONT color=#000099>字符串运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>&lt;&lt; &gt;&gt;</TD><TD><A title=位运算符 href="http://www.php.net/manual/zh/language.operators.bitwise.php"><U><FONT color=#000099>位运算符</FONT></U></A></TD></TR><TR><TD>非结合</TD><TD>&lt; &lt;= &gt; &gt;=</TD><TD><A title=比较运算符 href="http://www.php.net/manual/zh/language.operators.comparison.php"><U><FONT color=#000099>比较运算符</FONT></U></A></TD></TR><TR><TD>非结合</TD><TD>== != === !==</TD><TD><A title=比较运算符 href="http://www.php.net/manual/zh/language.operators.comparison.php"><U><FONT color=#000099>比较运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>&amp;</TD><TD><A title=位运算符 href="http://www.php.net/manual/zh/language.operators.bitwise.php"><U><FONT color=#000099>位运算符</FONT></U></A>和<A title=第 21 章 引用的解释 href="http://www.php.net/manual/zh/language.references.php"><U><FONT color=#000099>引用</FONT></U></A></TD></TR><TR><TD>左</TD><TD>^</TD><TD><A title=位运算符 href="http://www.php.net/manual/zh/language.operators.bitwise.php"><U><FONT color=#000099>位运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>|</TD><TD><A title=位运算符 href="http://www.php.net/manual/zh/language.operators.bitwise.php"><U><FONT color=#000099>位运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>&amp;&amp;</TD><TD><A title=逻辑运算符 href="http://www.php.net/manual/zh/language.operators.logical.php"><U><FONT color=#000099>逻辑运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>||</TD><TD><A title=逻辑运算符 href="http://www.php.net/manual/zh/language.operators.logical.php"><U><FONT color=#000099>逻辑运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>? :</TD><TD><A title=三元运算符 href="http://www.php.net/manual/zh/language.operators.comparison.php#language.operators.comparison.ternary"><U><FONT color=#000099>三元运算符</FONT></U></A></TD></TR><TR><TD>右</TD><TD>= += -= *= /= .= %= &amp;= |= ^= &lt;&lt;= &gt;&gt;= </TD><TD><A title=赋值运算符 href="http://www.php.net/manual/zh/language.operators.assignment.php"><U><FONT color=#000099>赋值运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>and</TD><TD><A title=逻辑运算符 href="http://www.php.net/manual/zh/language.operators.logical.php"><U><FONT color=#000099>逻辑运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>xor</TD><TD><A title=逻辑运算符 href="http://www.php.net/manual/zh/language.operators.logical.php"><U><FONT color=#000099>逻辑运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>or</TD><TD><A title=逻辑运算符 href="http://www.php.net/manual/zh/language.operators.logical.php"><U><FONT color=#000099>逻辑运算符</FONT></U></A></TD></TR><TR><TD>左</TD><TD>,</TD><TD>多处用到</TD></TR></TBODY></TABLE></DIV></DIV><BR class=table-break><></P><>左联表示表达式从左向右求值,右联相反。 <DIV class=example><A name=id2664800></A><><B>例 15.1. 结合方向</B></P><DIV class=example-contents><DIV class=phpcode><CODE><SPAN class=html><FONT face=Courier><SPAN class=default><FONT color=#0000bb>&lt;?php<BR>$a </FONT></SPAN><SPAN class=keyword><FONT color=#007700>= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>3 </FONT></SPAN><SPAN class=keyword><FONT color=#007700>* </FONT></SPAN><SPAN class=default><FONT color=#0000bb>3 </FONT></SPAN><SPAN class=keyword><FONT color=#007700>% </FONT></SPAN><SPAN class=default><FONT color=#0000bb>5</FONT></SPAN><SPAN class=keyword><FONT color=#007700>; </FONT></SPAN></FONT><FONT face=Courier><SPAN class=comment><FONT color=#ff8000>// (3 * 3) % 5 = 4<BR></FONT></SPAN><SPAN class=default><FONT color=#0000bb>$a </FONT></SPAN><SPAN class=keyword><FONT color=#007700>= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>true </FONT></SPAN><SPAN class=keyword><FONT color=#007700>? </FONT></SPAN><SPAN class=default><FONT color=#0000bb>0 </FONT></SPAN><SPAN class=keyword><FONT color=#007700>: </FONT></SPAN><SPAN class=default><FONT color=#0000bb>true </FONT></SPAN><SPAN class=keyword><FONT color=#007700>? </FONT></SPAN><SPAN class=default><FONT color=#0000bb>1 </FONT></SPAN><SPAN class=keyword><FONT color=#007700>: </FONT></SPAN><SPAN class=default><FONT color=#0000bb>2</FONT></SPAN><SPAN class=keyword><FONT color=#007700>; </FONT></SPAN></FONT><FONT face=Courier><SPAN class=comment><FONT color=#ff8000>// (true ? 0 : true) ? 1 : 2 = 2<BR><BR></FONT></SPAN><SPAN class=default><FONT color=#0000bb>$a </FONT></SPAN><SPAN class=keyword><FONT color=#007700>= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>1</FONT></SPAN></FONT><FONT face=Courier><SPAN class=keyword><FONT color=#007700>;<BR></FONT></SPAN><SPAN class=default><FONT color=#0000bb>$b </FONT></SPAN><SPAN class=keyword><FONT color=#007700>= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>2</FONT></SPAN></FONT><FONT face=Courier><SPAN class=keyword><FONT color=#007700>;<BR></FONT></SPAN><SPAN class=default><FONT color=#0000bb>$a </FONT></SPAN><SPAN class=keyword><FONT color=#007700>= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>$b </FONT></SPAN><SPAN class=keyword><FONT color=#007700>+= </FONT></SPAN><SPAN class=default><FONT color=#0000bb>3</FONT></SPAN><SPAN class=keyword><FONT color=#007700>; </FONT></SPAN></FONT><FONT face=Courier><SPAN class=comment><FONT color=#ff8000>// $a = ($b += 3) -&gt; $a = 5, $b = 5<BR></FONT></SPAN><SPAN class=default><FONT color=#0000bb>?&gt;</FONT></SPAN></FONT></SPAN></CODE></DIV></DIV></DIV><BR class=example-break>使用括号可以增强代码的可读性。 <></P><BLOCKQUOTE><><B>注意: </B>尽管 <VAR>!</VAR> 比 <VAR>=</VAR> 的优先级高,PHP 仍旧允许类似如下的表达式:<VAR>if (!$a = foo())</VAR>,在此例中 <VAR>foo()</VAR> 的输出被赋给了 <VAR>$a</VAR>。 </P></BLOCKQUOTE></DIV></DIV>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-5 20:04 , Processed in 0.121301 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表