📄 language.operators.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>Operators</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="language.expressions.html">Expressions</a></div> <div class="next" style="text-align: right; float: right;"><a href="language.operators.arithmetic.html">Arithmetic Operators</a></div> <div class="up"><a href="langref.html">Language Reference</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div><hr /><div> <h1>Operators</h1><h2>Table of Contents</h2><ul class="chunklist chunklist_chapter"><li><a href="language.operators.arithmetic.html">Arithmetic Operators</a></li><li><a href="language.operators.assignment.html">Assignment Operators</a></li><li><a href="language.operators.bitwise.html">Bitwise Operators</a></li><li><a href="language.operators.comparison.html">Comparison Operators</a></li><li><a href="language.operators.errorcontrol.html">Error Control Operators</a></li><li><a href="language.operators.execution.html">Execution Operators</a></li><li><a href="language.operators.increment.html">Incrementing/Decrementing Operators</a></li><li><a href="language.operators.logical.html">Logical Operators</a></li><li><a href="language.operators.string.html">String Operators</a></li><li><a href="language.operators.array.html">Array Operators</a></li><li><a href="language.operators.type.html">Type Operators</a></li></ul> <p class="simpara"> An operator is something that you feed with one or more values (or expressions, in programming jargon) which yields another value (so that the construction itself becomes an expression). So you can think of functions or constructions that return a value (like print) as operators and those that return nothing (like echo) as any other thing. </p> <p class="para"> There are three types of operators. Firstly there is the unary operator which operates on only one value, for example ! (the negation operator) or ++ (the increment operator). The second group are termed binary operators; this group contains most of the operators that PHP supports, and a list follows below in the section <a href="language.operators.html#language.operators.precedence" class="link">Operator Precedence</a>. </p> <p class="para"> The third group is the ternary operator: ?:. It should be used to select between two expressions depending on a third one, rather than to select two sentences or paths of execution. Surrounding ternary expressions with parentheses is a very good idea. </p> <div id="language.operators.precedence" class="sect1"> <h2 class="title">Operator Precedence</h2> <p class="para"> The precedence of an operator specifies how "tightly" it binds two expressions together. For example, in the expression <i>1 + 5 * 3</i>, the answer is <i>16</i> and not <i>18</i> because the multiplication ("*") operator has a higher precedence than the addition ("+") operator. Parentheses may be used to force precedence, if necessary. For instance: <i>(1 + 5) * 3</i> evaluates to <i>18</i>. If operator precedence is equal, left to right associativity is used. </p> <p class="para"> The following table lists the precedence of operators with the highest-precedence operators listed at the top of the table. Operators on the same line have equal precedence, in which case their associativity decides which order to evaluate them in. <table border="5"> <caption><b>Operator Precedence</b></caption> <colgroup> <thead valign="middle"> <tr valign="middle"> <th colspan="1">Associativity</th> <th colspan="1">Operators</th> <th colspan="1">Additional Information</th> </tr> </thead> <tbody valign="middle" class="tbody"> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">clone new</td> <td colspan="1" rowspan="1" align="left"><a href="language.oop5.cloning.html" class="link">clone</a> and <a href="language.oop5.basic.html#language.oop5.basic.new" class="link">new</a></td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">[</td> <td colspan="1" rowspan="1" align="left"><a href="function.array.html" class="function">array()</a></td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">++ --</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.increment.html" class="link">increment/decrement</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">~ - (int) (float) (string) (array) (object) (bool) @</td> <td colspan="1" rowspan="1" align="left"> <a href="language.types.html" class="link">types</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">instanceof</td> <td colspan="1" rowspan="1" align="left"> <a href="language.types.html" class="link">types</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">right</td> <td colspan="1" rowspan="1" align="left">!</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">* / %</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.arithmetic.html" class="link">arithmetic</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">+ - .</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.arithmetic.html" class="link">arithmetic</a> and <a href="language.operators.string.html" class="link">string</a></td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left"><< >></td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.bitwise.html" class="link">bitwise</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">< <= > >= <></td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.comparison.html" class="link">comparison</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">non-associative</td> <td colspan="1" rowspan="1" align="left">== != === !==</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.comparison.html" class="link">comparison</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">&</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.bitwise.html" class="link">bitwise</a> and <a href="language.references.html" class="link">references</a></td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">^</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.bitwise.html" class="link">bitwise</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">|</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.bitwise.html" class="link">bitwise</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">&&</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">||</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">? :</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.comparison.html#language.operators.comparison.ternary" class="link">ternary</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">right</td> <td colspan="1" rowspan="1" align="left"> = += -= *= /= .= %= &= |= ^= <<= >>= </td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.assignment.html" class="link">assignment</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">and</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">xor</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">or</td> <td colspan="1" rowspan="1" align="left"> <a href="language.operators.logical.html" class="link">logical</a> </td> </tr> <tr valign="middle"> <td colspan="1" rowspan="1" align="left">left</td> <td colspan="1" rowspan="1" align="left">,</td> <td colspan="1" rowspan="1" align="left">many uses</td> </tr> </tbody> </colgroup> </table> </p> <p class="para"> Left associativity means that the expression is evaluated from left to right, right associativity means the opposite. <div class="example"> <p><b>Example #1 Associativity</b></p> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br />$a </span><span style="color: #007700">= </span><span style="color: #0000BB">3 </span><span style="color: #007700">* </span><span style="color: #0000BB">3 </span><span style="color: #007700">% </span><span style="color: #0000BB">5</span><span style="color: #007700">; </span><span style="color: #FF8000">// (3 * 3) % 5 = 4<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">true </span><span style="color: #007700">? </span><span style="color: #0000BB">0 </span><span style="color: #007700">: </span><span style="color: #0000BB">true </span><span style="color: #007700">? </span><span style="color: #0000BB">1 </span><span style="color: #007700">: </span><span style="color: #0000BB">2</span><span style="color: #007700">; </span><span style="color: #FF8000">// (true ? 0 : true) ? 1 : 2 = 2<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">$b </span><span style="color: #007700">+= </span><span style="color: #0000BB">3</span><span style="color: #007700">; </span><span style="color: #FF8000">// $a = ($b += 3) -> $a = 5, $b = 5<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> Use parentheses to increase readability of the code. </p> <blockquote><p><b class="note">Note</b>: Although <i>=</i> has a lower precedence than most other operators, PHP will still allow expressions similar to the following: <i>if (!$a = foo())</i>, in which case the return value of <i>foo()</i> is put into <var class="varname">$a</var>. <br /> </p></blockquote> </div> </div><hr /><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="language.expressions.html">Expressions</a></div> <div class="next" style="text-align: right; float: right;"><a href="language.operators.arithmetic.html">Arithmetic Operators</a></div> <div class="up"><a href="langref.html">Language Reference</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -