邏輯運算子比較簡單,是我們?nèi)祟愡M(jìn)行邏輯思考時的一種方式。
講出很多吊絲男士的心願:某一個女人,要不長得漂亮、要不比我有錢我就娶她。如果一個條件都沒有,那就算了。
上面的這種不評價好壞的心理狀態(tài),只是來說明這就是典型的電腦思維。
美麗這個條件成立(true) 或 財富這個條件成立(true),則執(zhí)行娶她的行為和動作。否則,就不娶這個女孩。
那我們把這些邏輯關(guān)於進(jìn)行了歸納和總結(jié),下面表格中的:$x為條件一,$y 為條件二。進(jìn)行說明:
邏輯與,中文解釋為並且??衫斫鉃椋?x 且 $y 都為真(true)的時候執(zhí)行。
邏輯或,中文解釋為或??梢岳斫鉃?$x或$y其中一個為真(true)的時候執(zhí)行。
邏輯非,中文解釋取反。如果$x的執(zhí)為假(false),進(jìn)行一次非操作。非假(false)就為真了,就可以執(zhí)行真區(qū)間了。反推true,則執(zhí)行假區(qū)間了。
邏輯異或,若$x和$y相同則為false,則不相同則為true。
範(fàn)例 | 說明 | 詳細(xì)說明 |
---|
##$ x and $y | 邏輯與(並且關(guān)係) | $x 和$y 為真則回傳真 |
$x && $y | 同上 | 同上 |
$x or $y | 邏輯或 | $x,$y均為false時為假,其他情況全為真 |
$a||$b | 同上 | 同上 |
!$x | 邏輯非 | 取反,即true變成false,false變成true |
$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]
解釋:退出
<?php
$x = true;
$y = 2;
if($x | $y++){
echo '真';
}else{
echo '假';
}
//自己運行對比結(jié)果
echo $y;
?>
課件暫不提供下載,工作人員正在整理中,後期請多關(guān)注該課程~
看過本課程的同學(xué)也在學(xué)習(xí)