PHP第二天 邏輯與 邏輯或 邏輯非

2021-09-22 12:55:06 字數 2894 閱讀 4392

<?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 則用於...