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