php基礎(chǔ)語法之邏輯運算
邏輯運算符比較簡單,是我們?nèi)祟愡M行邏輯思考時的一種方式。
講出很多吊絲男士的心愿:某一個女人,要不長得漂亮、要不比我有錢我就娶她。如果一個條件都沒有,那就算了。
上面的這種不評價好壞的心理狀態(tài),只是來說明這就是典型的計算機思維。
美麗這個條件成立(true) 或者 財富這個條件成立(true),則執(zhí)行娶她的行為和動作。否則,就不娶這個女孩。
那我們把這些邏輯關(guān)于進行了歸納和總結(jié),下面表格中的:$x為條件一,$y 為條件二。進行說明:
邏輯與,中文解釋為并且??衫斫鉃?,$x 并且 $y 都為真(true)的時候執(zhí)行。
邏輯或,中文解釋為或者。可以理解為,$x或者$y其中一個為真(true)的時候執(zhí)行。
邏輯非,中文解釋取反。如果$x的執(zhí)為假(false),進行一次非操作。非假(false)就為真了,就可以執(zhí)行真區(qū)間了。反推true,則執(zhí)行假區(qū)間了。
邏輯異或,如果$x和$y相同則為false,不相同則為true。
舉例 | 說明 | 詳細說明 |
---|---|---|
$x and $y | 邏輯與(并且關(guān)系) | $x 和$y 為真則返回真 |
$x && $y | 同上 | 同上 |
$x or $y | 邏輯或 | $x,$y均為false時為假,其他情況全為真 |
$a||$b | 同上 | 同上 |
!$x | 邏輯非 | 取反,即true變?yōu)閒alse,false變?yōu)閠rue |
$x xor $y | 邏輯異或 | 相同取false,相異為true |
那我們來舉幾個例子來試試,你自己也要記得多做幾次實驗(可結(jié)合3.4.4這一章中的比較運算符自己寫幾個例子喲)。
邏輯與:
<?php $x = true; $y = false; //邏輯與(并且),要求兩個都為true才執(zhí)行真區(qū)間,所以代碼中執(zhí)行假區(qū)間 if($x && $y){ echo '執(zhí)行了真區(qū)間'; }else{ echo '執(zhí)行了假區(qū)間'; } ?>
邏輯或:
<?php $foo = false; $bar = true; //邏輯或,有一個為真則為真 if($foo || $bar){ echo '執(zhí)行真區(qū)間'; }else{ echo '執(zhí)行假區(qū)間'; } ?>
邏輯非:
<?php $foo = false; //邏輯非,把false變?yōu)榱藅rue if(!$foo){ echo '執(zhí)行真區(qū)間'; }else{ echo '執(zhí)行假區(qū)間'; } ?>
【重點知識】短路
短路就是采用一個懶人模式來思考問題。
邏輯與的特性是:兩邊為true即為true,其他情況均為假。
邏輯或的特性是:兩邊為假均為假,其他情況全為真。
我們現(xiàn)在把自己想象成一個懶漢,非常非常懶。來思考邏輯與和邏輯或??刹豢梢赃@樣理解:
邏輯與:如果前面第一個條件為false了,后面就可以不用執(zhí)行了。
用代碼表示:if($x && $y) 如果$x已經(jīng)為false了,后面的$y 就沒有執(zhí)行必要了。
邏輯或:前面第一個條件為true了,后面就不用執(zhí)行了。
用代碼表示:if($x || $y) 如果$x已經(jīng)為true了,后面的$y 就沒有執(zhí)行必要了。
我們寫段代碼來證明一下:
<?php $x = false; $y = 2; if($x && $y++){ echo '真'; }else{ echo '假'; } //結(jié)果還為2,說明沒有執(zhí)行$y++ echo $y; ?>
代碼如下,將兩個&符改為一個&符試試:
<?php $x = false; $y = 2; if($x & $y++){ echo '真'; }else{ echo '假'; } //再看看結(jié)果 echo $y; ?>
我們來看看短路的邏輯或:
<?php $x = true; $y = 2; if($x || $y++){ echo '真'; }else{ echo '假'; } //結(jié)果,因為$x已經(jīng)為true了,肯定執(zhí)行真區(qū)間沒有必要執(zhí)行$y++了 echo $y; ?>
改成一個 | 再看看執(zhí)行結(jié)果
<?php $x = true; $y = 2; if($x | $y++){ echo '真'; }else{ echo '假'; } //自己運行對比結(jié)果 echo $y; ?>
通過上例我們知道了&&與&的區(qū)別,||和 |的區(qū)別。我們也了解了什么是短路。那我們在什么地方可以用到短路呢?有一些奇怪的寫法,我們必須了清楚。其實就是基礎(chǔ)語法的再應(yīng)用。
回顧3.3.1最后一段內(nèi)容:
<?php //如果為defined('AUTH')存在AUTH常量則為true,不訪問后面的exit了。如果為false則執(zhí)行exit defined('AUTH') or exit('存在安全因素不準(zhǔn)訪問'); ?>
上面的一段代碼就是典型的短路應(yīng)用的代碼
exit 的意思是指在此處停止運行,退出。后面的PHP代碼不再執(zhí)行了。它有兩種用法:
1,直接exit; 就是直接退出
2,exit(‘提示內(nèi)容’),退出的時候還給出一段提示內(nèi)容
exit
讀音:[?eks?t]
解釋:退出