<?php
// 假設給定乙個整數表示乙個員工的年齡,
// 如果該年齡為整十的數,
// 或者年齡的平方除以100在10~20之間,
// 則公司在當年年底會給該員工發特別獎。
// 請寫出程式來判斷某個年齡的員工是否可以得獎。
$age = 71; //當age為20,30,就會發生短路
if($age % 10 ==0 || $age*$age/100>=10 && $age*$age/100<=20)else
echo "";
if( $age*$age/100<=20 || $age*$age/100>=10 && $age % 10 ==0)else
?>
結論:
我們應該將我們可能發生短路運算的邏輯判斷的前後判斷語句,做如下調整:
相對簡單的運算放前面(左側),相對複雜的運算放後面(右側)。
對於邏輯或的短路運算,道理一樣。
邏輯運算的短路規則:
短路的基本概念:
就是對於「邏輯與」 或 「邏輯或」這兩種運算子,他們可能會只進行左側的邏輯判斷之後,立即就中斷後續 (右側)的判斷,而得出整個邏輯運算子的運算結果!
邏輯與的短路:
if ( 左側判斷 && 右側判斷 ) //此時,如果左側判斷為false,則右側判斷不再進行
邏輯或的短路:
if ( 左側判斷 || 右側判斷 ) //此時,如果左側判斷為true,則右側判斷不再進行
邏輯與(&&):
含義:表示兩個條件(資料)的真假結果是否同時為真的共同作用結果。
運算結果:只有兩個條件都為真的時候,結果才是真(true)。
只有如下4種情況:
true && true 結果為 true
true && false 結果為 false
false && true 結果為 false
false &&false 結果為 false
總結歸納出邏輯與(&&)的真值表(就是公式,類似99乘法表):
$v1, $v2表示任意變數(條件)
$v1 = true時
$v1 = false時
$v2 = true時
$v1 && $v2 :true
$v1 && $v2 :false
$v2 = false時
$v1 && $v2 :false
$v1 && $v2 :false
可見:邏輯與運算的結果,只有兩個是真,才是真。
實際應用中,往往是以「條件」的面目出現,而不是簡單的真假值。
案例:
給定乙個任意整數,請判斷該數是否能被3整除並且還能被5整除!
$v1 = 18;
if( $v1 % 3 == 0 && $v1 % 5 == 0 )
邏輯或(||):
含義:表示兩個條件(資料)的真假結果的是否存在「真」的情況的共同作用結果。
運算規則:
只要有任意乙個條件為真(true),結果就是真。
只有如下4種情況:
true || true 結果為 true
true || false 結果為true
false || true 結果為 true
false ||false 結果為 false
總結歸納出邏輯或(||)的真值表(就是公式,類似99乘法表):
$v1, $v2表示任意變數(條件)
$v1 = true時
$v1 = false時
$v2 = true時
$v1 || $v2 :true
$v1 || $v2 :true
$v2 = false時
$v1 || $v2 :true
$v1 || $v2 :false
可見:邏輯或運算的結果,只要有乙個是真,就是真。
實際應用中,往往也是以「條件」的面目出現,而不是簡單的真假值,比如:
$v1 = 18; //請判斷該數是否能被3整除或能被5整除!
if( $v1 % 3 == 0 || $v1 % 5 == 0 )
案例:
給定乙個整數表示年份,請判斷該年份是否為閏年。
(注:閏年是能被4整除但不能被100整除的年,或者能被400整除的年。)
<?php
if( !empty($_post['year']))
else
不是閏年。";}}
else
}else
}else
?>
邏輯非(!):
就是對乙個布林值進行「取反」操作,規則為:
!true 結果為false
!false 結果為true
邏輯非(!)在if中的常見應用情形:
if( !isset( $v1 ) ) //如果$v1為空(null)
if( !empty( $v1 ) ) //如果$v1不為空(empty)
對應的兩個相反的情形是:
if( isset( $v1 ) ) //如果$v1存在
if( empty( $v1 ) ) //如果$v1為空(empty)
區分兩個「空」:
null: 「真空」,什麼都沒有,是明確定義的「沒有資料」的一種寫法(含義)
empty:「現實意義上的沒有」,就是無,就是0,等等,常見的,認為是empty的資料有:
「」(空字串), 0, 0.0, 「0」, false, null, 空陣列,
還是查手冊》附錄》型別比較表:
PHP 第二天 邏輯與 運算子
5.8.邏輯運算子 針對 布林值 進行的運算,只有3個 與 或 非 如果不是布林值,會自動轉換為布林值去進行運算。因為布林值只有2個,不管怎麼排列組合,最終只有以下10種情況的計算,幾乎就是公式化。5.8.1.邏輯與 含義 表示兩個條件 資料 的真假結果是否同時為真的共同作用結果。運算結果 只有兩個...
與或非 和 邏輯 與或 運算
謹記 與或非是針對二進位制進行計算的,邏輯與和非是針對事件真假進行計算。二進位制的 與 運算a ba b00 0100 0101 11 二進位制的 或 運算a ba b00 0101 0111 11 二進位制的 非 運算a a0 1127 128 1211 邏輯 與 運算 事件 a 事件 a 事件 ...
邏輯與或非異或邏輯運算及ABB指令講解
1 and 邏輯與運算 and為用於評估兩個條件表示式 真 假 的函式返回值為true false 或者 1 0 條件判斷時,要同時滿足才為真 舉例1 and 1 返回結果為1,也就是為真 1 and 0 返回結果為0,也就是假 0 and 0 返回結果為0,也是假 2 or邏輯或運算 or 則用於...