admin 发表于 2023-2-16 18:54:40

PHP 运算符

<div id="article_content" class="article_content clearfix">
      <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
      <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css">
                <div id="content_views" class="htmledit_views">
                  <p>本章节我们将讨论 PHP 中不同运算符的应用。</p>
<p>在 PHP 中&#xff0c;赋值运算符 &#61; 用于给变量赋值。</p>
<p>在 PHP 中&#xff0c;算术运算符 &#43; 用于把值加在一起。</p>
<hr>
<h2>PHP 算术运算符</h2>
<table><tbody><tr><th>运算符</th><th>名称</th><th>描述</th><th>实例</th><th>结果</th></tr><tr><td>x &#43; y</td><td>加</td><td>x 和 y 的和</td><td>2 &#43; 2</td><td>4</td></tr><tr><td>x - y</td><td>减</td><td>x 和 y 的差</td><td>5 - 2</td><td>3</td></tr><tr><td>x * y</td><td>乘</td><td>x 和 y 的积</td><td>5 * 2</td><td>10</td></tr><tr><td>x / y</td><td>除</td><td>x 和 y 的商</td><td>15 / 5</td><td>3</td></tr><tr><td>x % y</td><td>模&#xff08;除法的余数&#xff09;</td><td>x 除以 y 的余数</td><td>5 % 2<br> 10 % 8<br> 10 % 2</td><td>1<br> 2<br> 0</td></tr><tr><td>- x</td><td>取反</td><td>x 取反</td><td> <pre><?php
$x &#61;2;
echo -$x;
?></pre> </td><td>-2</td></tr><tr><td>a . b</td><td>并置</td><td>连接两个字符串</td><td>&#34;Hi&#34; . &#34;Ha&#34;</td><td>HiHa</td></tr></tbody></table>
<p>以下实例演示了使用不同算术运算符得到的不同结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $x&#61;10; $y&#61;6; echo ($x &#43; $y); // 输出16 echo '<br>'; // 换行 echo ($x - $y); // 输出4 echo '<br>'; // 换行 echo ($x * $y); // 输出60 echo '<br>'; // 换行 echo ($x / $y); // 输出1.6666666666667 echo '<br>'; // 换行 echo ($x % $y); // 输出4 echo '<br>'; // 换行 echo -$x; ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_arithmetic">尝试一下 »</a></p>
<p>PHP7&#43; 版本新增整除运算符 <strong>intdiv()</strong>&#xff0c;该函数返回值为第一个参数除于第二个参数的值并取整&#xff08;向下取整&#xff09;&#xff0c;使用实例&#xff1a;</p>
<h2>实例</h2>
<p><?php var_dump(intdiv(10, 3)); ?></p>
<p>以上实例会输出&#xff1a;</p>
<pre>int(3)</pre>
<hr>
<h2>PHP 赋值运算符</h2>
<p>在 PHP 中&#xff0c;基本的赋值运算符是 &#34;&#61;&#34;。它意味着左操作数被设置为右侧表达式的值。也就是说&#xff0c;&#34;$x &#61; 5&#34; 的值是 5。</p>
<table><tbody><tr><th>运算符</th><th>等同于</th><th>描述</th></tr><tr><td>x &#61; y</td><td>x &#61; y</td><td>左操作数被设置为右侧表达式的值</td></tr><tr><td>x &#43;&#61; y</td><td>x &#61; x &#43; y</td><td>加</td></tr><tr><td>x -&#61; y</td><td>x &#61; x - y</td><td>减</td></tr><tr><td>x *&#61; y</td><td>x &#61; x * y</td><td>乘</td></tr><tr><td>x /&#61; y</td><td>x &#61; x / y</td><td>除</td></tr><tr><td>x %&#61; y</td><td>x &#61; x % y</td><td>模&#xff08;除法的余数&#xff09;</td></tr><tr><td>a .&#61; b</td><td>a &#61; a . b</td><td>连接两个字符串</td></tr></tbody></table>
<p>以下实例演示了使用不同赋值运算符得到的不同结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $x&#61;10; echo $x; // 输出10 $y&#61;20; $y &#43;&#61; 100; echo $y; // 输出120 $z&#61;50; $z -&#61; 25; echo $z; // 输出25 $i&#61;5; $i *&#61; 6; echo $i; // 输出30 $j&#61;10; $j /&#61; 5; echo $j; // 输出2 $k&#61;15; $k %&#61; 4; echo $k; // 输出3 ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_assignment">尝试一下 »</a></p>
<p>以下实例演示了使用不同字符串运算符得到的相同结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $a &#61; &#34;Hello&#34;; $b &#61; $a . &#34; world!&#34;; echo $b; // 输出Hello world! $x&#61;&#34;Hello&#34;; $x .&#61; &#34; world!&#34;; echo $x; // 输出Hello world! ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_string">尝试一下 »</a></p>
<hr>
<h2>PHP 递增/递减运算符</h2>
<table id="table1"><tbody><tr><th>运算符</th><th>名称</th><th>描述</th></tr><tr><td>&#43;&#43; x</td><td>预递增</td><td>x 加 1&#xff0c;然后返回 x</td></tr><tr><td>x &#43;&#43;</td><td>后递增</td><td>返回 x&#xff0c;然后 x 加 1</td></tr><tr><td>-- x</td><td>预递减</td><td>x 减 1&#xff0c;然后返回 x</td></tr><tr><td>x --</td><td>后递减</td><td>返回 x&#xff0c;然后 x 减 1</td></tr></tbody></table>
<p>以下实例演示了使用递增/递减运算符得到的结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $x&#61;10; echo &#43;&#43;$x; // 输出11 $y&#61;10; echo $y&#43;&#43;; // 输出10 $z&#61;5; echo --$z; // 输出4 $i&#61;5; echo $i--; // 输出5 ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_increment">尝试一下 »</a></p>
<hr>
<h2>PHP 比较运算符</h2>
<p>比较操作符可以让您比较两个值&#xff1a;</p>
<table><tbody><tr><th>运算符</th><th>名称</th><th>描述</th><th>实例</th></tr><tr><td>x &#61;&#61; y</td><td>等于</td><td>如果 x 等于 y&#xff0c;则返回 true</td><td>5&#61;&#61;8 返回 false</td></tr><tr><td>x &#61;&#61;&#61; y</td><td>绝对等于</td><td>如果 x 等于 y&#xff0c;且它们类型相同&#xff0c;则返回 true</td><td>5&#61;&#61;&#61;&#34;5&#34; 返回 false</td></tr><tr><td>x !&#61; y</td><td>不等于</td><td>如果 x 不等于 y&#xff0c;则返回 true</td><td>5!&#61;8 返回 true</td></tr><tr><td>x <> y</td><td>不等于</td><td>如果 x 不等于 y&#xff0c;则返回 true</td><td>5<>8 返回 true</td></tr><tr><td>x !&#61;&#61; y</td><td>绝对不等于</td><td>如果 x 不等于 y&#xff0c;或它们类型不相同&#xff0c;则返回 true</td><td>5!&#61;&#61;&#34;5&#34; 返回 true</td></tr><tr><td>x > y</td><td>大于</td><td>如果 x 大于 y&#xff0c;则返回 true</td><td>5>8 返回 false</td></tr><tr><td>x < y</td><td>小于</td><td>如果 x 小于 y&#xff0c;则返回 true</td><td>5<8 返回 true</td></tr><tr><td>x >&#61; y</td><td>大于等于</td><td>如果 x 大于或者等于 y&#xff0c;则返回 true</td><td>5>&#61;8 返回 false</td></tr><tr><td>x <&#61; y</td><td>小于等于</td><td>如果 x 小于或者等于 y&#xff0c;则返回 true</td><td>5<&#61;8 返回 true</td></tr></tbody></table>
<p>以下实例演示了使用一些比较运算符得到的不同结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $x&#61;100; $y&#61;&#34;100&#34;; var_dump($x &#61;&#61; $y); echo &#34;<br>&#34;; var_dump($x &#61;&#61;&#61; $y); echo &#34;<br>&#34;; var_dump($x !&#61; $y); echo &#34;<br>&#34;; var_dump($x !&#61;&#61; $y); echo &#34;<br>&#34;; $a&#61;50; $b&#61;90; var_dump($a > $b); echo &#34;<br>&#34;; var_dump($a < $b); ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_comparison">尝试一下 »</a></p>
<hr>
<h2>PHP 逻辑运算符</h2>
<table><tbody><tr><th>运算符</th><th>名称</th><th>描述</th><th>实例</th></tr><tr><td>x and y</td><td>与</td><td>如果 x 和 y 都为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> (x < 10 and y > 1) 返回 true</td></tr><tr><td>x or y</td><td>或</td><td>如果 x 和 y 至少有一个为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> (x&#61;&#61;6 or y&#61;&#61;5) 返回 true</td></tr><tr><td>x xor y</td><td>异或</td><td>如果 x 和 y 有且仅有一个为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> (x&#61;&#61;6 xor y&#61;&#61;3) 返回 false</td></tr><tr><td>x && y</td><td>与</td><td>如果 x 和 y 都为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> (x < 10 && y > 1) 返回 true</td></tr><tr><td>x || y</td><td>或</td><td>如果 x 和 y 至少有一个为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> (x&#61;&#61;5 || y&#61;&#61;5) 返回 false</td></tr><tr><td>! x</td><td>非</td><td>如果 x 不为 true&#xff0c;则返回 true</td><td>x&#61;6<br> y&#61;3<br> !(x&#61;&#61;y) 返回 true</td></tr></tbody></table>
<hr>
<h2>PHP 数组运算符</h2>
<table id="table2"><tbody><tr><th>运算符</th><th>名称</th><th>描述</th></tr><tr><td>x &#43; y</td><td>集合</td><td>x 和 y 的集合</td></tr><tr><td>x &#61;&#61; y</td><td>相等</td><td>如果 x 和 y 具有相同的键/值对&#xff0c;则返回 true</td></tr><tr><td>x &#61;&#61;&#61; y</td><td>恒等</td><td>如果 x 和 y 具有相同的键/值对&#xff0c;且顺序相同类型相同&#xff0c;则返回 true</td></tr><tr><td>x !&#61; y</td><td>不相等</td><td>如果 x 不等于 y&#xff0c;则返回 true</td></tr><tr><td>x <> y</td><td>不相等</td><td>如果 x 不等于 y&#xff0c;则返回 true</td></tr><tr><td>x !&#61;&#61; y</td><td>不恒等</td><td>如果 x 不等于 y&#xff0c;则返回 true</td></tr></tbody></table>
<p>以下实例演示了使用一些数组运算符得到的不同结果&#xff1a;</p>
<h2>实例</h2>
<p><?php $x &#61; array(&#34;a&#34; &#61;> &#34;red&#34;, &#34;b&#34; &#61;> &#34;green&#34;); $y &#61; array(&#34;c&#34; &#61;> &#34;blue&#34;, &#34;d&#34; &#61;> &#34;yellow&#34;); $z &#61; $x &#43; $y; // $x 和 $y 数组合并 var_dump($z); var_dump($x &#61;&#61; $y); var_dump($x &#61;&#61;&#61; $y); var_dump($x !&#61; $y); var_dump($x <> $y); var_dump($x !&#61;&#61; $y); ?></p>
<p><br><ahref="https://www.runoob.com/try/showphp.php?filename&#61;demo_operator_array">尝试一下 »</a></p>
<hr>
<h2>三元运算符</h2>
<p>另一个条件运算符是&#34;?:&#34;&#xff08;或三元&#xff09;运算符 。</p>
<h3>语法格式</h3>
<pre>(expr1) ? (expr2) : (expr3) </pre>
<p>对 expr1 求值为 TRUE 时的值为 expr2&#xff0c;在 expr1 求值为 FALSE 时的值为 expr3。</p>
<p>自 PHP 5.3 起&#xff0c;可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1&#xff0c;否则返回 expr3。</p>
<h3>实例</h3>
<p>以下实例中通过判断 $_GET 请求中含有 user 值&#xff0c;如果有返回 $_GET['user']&#xff0c;否则返回 nobody&#xff1a;</p>
<h2>实例</h2>
<p><?php $test &#61; '菜鸟教程'; // 普通写法 $username &#61; isset($test) ? $test : 'nobody'; echo $username, PHP_EOL; // PHP 5.3&#43; 版本写法 $username &#61; $test ?: 'nobody'; echo $username, PHP_EOL; ?></p>
<pre>菜鸟教程
菜鸟教程</pre>
<p><strong>注意&#xff1a;</strong>PHP_EOL 是一个换行符&#xff0c;兼容更大平台。</p>
<p>在 PHP7&#43; 版本多了一个 NULL 合并运算符 ??&#xff0c;实例如下&#xff1a;</p>
<h2>实例</h2>
<p><?php // 如果 $_GET['user'] 不存在返回 'nobody'&#xff0c;否则返回 $_GET['user'] 的值 $username &#61; $_GET['user'] ?? 'nobody'; // 类似的三元运算符 $username &#61; isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?></p>
<hr>
<h2>组合比较符(PHP7&#43;)</h2>
<p>PHP7&#43; 支持组合比较符&#xff08;combined comparison operator&#xff09;也称之为太空船操作符&#xff0c;符号为 <&#61;>。组合比较运算符可以轻松实现两个变量的比较&#xff0c;当然不仅限于数值类数据的比较。</p>
<p>语法格式如下&#xff1a;</p>
<pre>$c &#61; $a <&#61;> $b;</pre>
<p>解析如下&#xff1a;</p>
<ul><li>如果<strong> $a > $b</strong>, 则 <strong>$c</strong> 的值为 <strong>1</strong>。</li><li>如果 <strong>$a &#61;&#61; $b</strong>, 则 <strong>$c</strong> 的值为 <strong>0</strong>。</li><li>如果 <strong>$a < $b</strong>, 则 <strong>$c</strong> 的值为 <strong>-1</strong>。</li></ul>
<p>实例如下&#xff1a;</p>
<h2>实例</h2>
<p><?php // 整型 echo 1 <&#61;> 1; // 0 echo 1 <&#61;> 2; // -1 echo 2 <&#61;> 1; // 1 // 浮点型 echo 1.5 <&#61;> 1.5; // 0 echo 1.5 <&#61;> 2.5; // -1 echo 2.5 <&#61;> 1.5; // 1 // 字符串 echo &#34;a&#34; <&#61;> &#34;a&#34;; // 0 echo &#34;a&#34; <&#61;> &#34;b&#34;; // -1 echo &#34;b&#34; <&#61;> &#34;a&#34;; // 1 ?></p>
<hr>
<h2>运算符优先级</h2>
<p>下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级&#xff0c;此时它们的结合方向决定求值顺序。</p>
<p><strong>说明</strong>&#xff1a;左 &#xff1d; 从左到右&#xff0c;右 &#xff1d; 从右到左。</p>
<table><thead><tr><th>结合方向</th><th>运算符</th><th>附加信息</th></tr></thead><tbody><tr><td>无</td><td>clone new</td><td>clone 和 new</td></tr><tr><td>左</td><td>[</td><td>array()</td></tr><tr><td>右</td><td>&#43;&#43; -- ~ (int) (float) (string) (array) (object) (bool) &#64;</td><td>类型和递增&#xff0f;递减</td></tr><tr><td>无</td><td>instanceof</td><td>类型</td></tr><tr><td>右</td><td>!</td><td>逻辑运算符</td></tr><tr><td>左</td><td>* / %</td><td>算术运算符</td></tr><tr><td>左</td><td>&#43; – .</td><td>算术运算符和字符串运算符</td></tr><tr><td>左</td><td><< >></td><td>位运算符</td></tr><tr><td>无</td><td>&#61;&#61; !&#61; &#61;&#61;&#61; !&#61;&#61; <></td><td>比较运算符</td></tr><tr><td>左</td><td>&</td><td>位运算符和引用</td></tr><tr><td>左</td><td>^</td><td>位运算符</td></tr><tr><td>左</td><td>|</td><td>位运算符</td></tr><tr><td>左</td><td>&&</td><td>逻辑运算符</td></tr><tr><td>左</td><td>||</td><td>逻辑运算符</td></tr><tr><td>左</td><td>? :</td><td>三元运算符</td></tr><tr><td>右</td><td>&#61; &#43;&#61; -&#61; *&#61; /&#61; .&#61; %&#61; &&#61; |&#61; ^&#61; <<&#61; >>&#61; &#61;></td><td>赋值运算符</td></tr><tr><td>左</td><td>and</td><td>逻辑运算符</td></tr><tr><td>左</td><td>xor</td><td>逻辑运算符</td></tr><tr><td>左</td><td>or</td><td>逻辑运算符</td></tr><tr><td>左</td><td>,</td><td>多处用到</td></tr></tbody></table>
<p>运算符优先级中&#xff0c;or 和 ||&#xff0c;&& 和 and 都是逻辑运算符&#xff0c;效果一样&#xff0c;但是其优先级却不一样。</p>
<h2>实例</h2>
<p><?php // 优先级&#xff1a; && > &#61; > and // 优先级&#xff1a; || > &#61; > or $a &#61; 3; $b &#61; false; $c &#61; $a or $b; var_dump($c); // 这里的 $c 为 int 值3&#xff0c;而不是 boolean 值 true $d &#61; $a || $b; var_dump($d); //这里的 $d 就是 boolean 值 true ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>int(3)
bool(true)</pre>
<h3>括号的使用</h3>
<p>我们通过括号的配对来明确标明运算顺序&#xff0c;而非靠运算符优先级和结合性来决定&#xff0c;通常能够增加代码的可读性。</p>
<h2>实例</h2>
<p><?php // 括号优先运算 $a &#61; 1; $b &#61; 2; $c &#61; 3; $d &#61; $a &#43; $b * $c; echo $d; echo &#34;\n&#34;; $e &#61; ($a &#43; $b) * $c; // 使用括号 echo $e; echo &#34;\n&#34;; ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>7
9</pre>
                </div>
      </div>
      <div id="treeSkill"></div>
页: [1]
查看完整版本: PHP 运算符