網頁

2017年3月31日 星期五

PHP 語法入門-2~if...else() 判斷式

PHP 判斷式指令:
if( ){ } else{}

判斷式在 PHP 中有很多種類型,這裡先談最基本,也是最常用到的就是這個
if( ){ }else{}   把它翻譯成中文的邏輯解釋,應當是這樣翻譯:
如果 ( 條件 ) {  條件成立時的動作 }     否則     { 條件不成立時的動作 }
其實這段邏輯大家應該都知道用法並且經常使用到 ,只是不知道如何用程式碼寫出來而已,下面這段話,是星爺迷應該都耳熟能詳,注意看它的判斷式:
如果 ( 上天可以給我個機會再來一次的話 ) {  我會對這個女孩說我愛她 }   曾經有一份真誠的愛擺在我的面前但是我沒有珍惜等到失去的時候才 {  後悔莫及,塵世間最痛苦的事莫過於此 }
日常生活也常用到判斷式,如:
如果(外面下雨)我們就去看電影否則我們就去爬山
對應字體顏色看看程式碼:
if  (  ){      }  else {    }
※ else{} 也可以是非必要的,要看狀況使用
像這樣
if ( ) { }
如果 非要在這份愛加上一個期限 ) { 我希望是一萬年...... }

我們先來認識一下判斷式須要用到的幾個簡單符號:
比較運算符
符號說  明
$a == $b$a 等於 $b (不考慮資料型態註解])
$a === $b$a 等於 $b (資料型態也要相同
$a != $b$a 不等於 $b (不考慮資料型態)
$a <> $b$a 不等於 $b (不考慮資料型態)
$a !== $b$a 不等於 $b (資料型態也不相等
$a > $b$a 大於 $b (數值判斷)
$a  $b$a 小於 $b (數值判斷)
$a >= $b$a 大於 $b  或是 $a 等於 $b
$a =< $b$a 小於等於 $b 或是 $a 等於 $b
※ 請注意符號的擺放位置  比如 $a >= $b  不能寫成  $a => $b 這樣就代表另外的意思了($a => $b 這是屬於陣列代入值,這裡先不煙酒{不研究})
邏輯運算符
符號說  明
$a and $b$a  $b 兩者條件都必須符合,才算符合
舉例:如果下雨 並且 刮風 ....(其中有一項沒有成立就不算了,有下雨沒刮風 這樣就不成立 ,沒下雨有刮風 這樣也不成立)
$a && $b&& 符號與 and 是一樣的意思,同上方 $a and $b 說明
$a or $b $a 或是 $b 其中一個符合,就算成立
舉例:晚餐吃啥?
答:火鍋或是自助餐都可......(所以只要有吃到火鍋或是自助餐其中一樣條件就已經成立,當然兩者都吃到也是成立)
$a || $b|| 符號與 or 是一樣的意思,同上方 $a or $b 說明
!$a 否定,解釋成唱反調...(假設 $a 是一個條件,那麼 只要不符合 $a 條件的都算成立)
例如:
甲:我們來去日本玩
乙:不去日本,其他地方都可以
這個 乙 否定掉 甲 ,所以這個乙就是反向
$a xor $b兩者之間只能有一個符合條件
常發生在三角戀愛....你要選他還是選我...只能選一個..

[補充上方註解]
php的資料類型(Data Type)共有幾種:官網有詳細說明與介紹,下面僅簡單介紹四種:
php資料類型
類型 說明範例
布爾(布林)類型
( boolean )
這是最簡單的類型。要指定一個布爾值,使用關鍵字 TRUE ()或 FALSE ()。兩個都不區分大小寫。
通常運算符所返回的 boolean值結果會被傳遞給控制流程。
$foo = true;
$foo = false;
整數類型
( Integer )
整型值可以使用十進制,十六進制,八進制或二進製表示,前面可以加上可選的符號(- 或者 +)。二進制表達的 integer 自 PHP 5.4.0 起可用。
要使用八進制表達,數字前必須加上 0(零)。要使用十六進制表達,數字前必須加上 0x。要使用二進制表達,數字前必須加上 0b
$a = 1234; // 十進制數
$a = -123; // 負數
$a = 0123; // 八進制數 (等於十進制 83)
$a = 0x1A; // 十六進制數 (等於十進制 26)
浮點數(布林)類型
( float )
浮點型(也叫浮點數 float,雙精度數 double 或實數 real)可以用以下任一語法定義:
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
※ e 為科學記號指數後面接的數字為10的幾次方,e後面的數字為正則為10的幾次方,e數字後面為負則為10的負次方計算:
如:
1.2e3 = 1.2 x 103 =1.2 x 1000 = 1200
1.2-E3 = 1.2 x 10-3 1.2 x 0.001 = 0.0012
7E-10 = 7x10-10 = 7 x 0.0000000001 = 0.0000000007
$a = 1.2345;
$b = 1.5e10;
$c = 1E-5;
字串
( string )
 一個字串(string)就是由一系列的字元組成,其中每個字元等同於一個字節。
定義一個字串的最簡單的方法是用單引號把它包圍起來('字串')。
如果字符串是包圍在雙引號(")中, PHP 將對一些特殊的字符進行解析:
\n 換行(ASCII 字符集中的 LF 或 0x0A (10))
\r 回車(ASCII 字符集中的 CR 或 0x0D (13))
\t 水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
\v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 換頁(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\\ 反斜線
\$ 美元標記
\" 雙引號
\[0-7]{1,3} 符合該正則表達式序列的是一個以八進制方式來表達的字符
\x[0-9A-Fa-f]{1,2} 符合該正則表達式序列的是一個以十六進制方式來表達的字符
$a = '小明';
$b = '西瓜';
$d = "小華";
$c = "旺財";

講了那麼多,看了也就沒有懂,不然就是忘光光,直接來做個實際的範例吧:
php if()else{} 演示範例


再來示範 布爾(布林)類型

型態的判斷式

判斷式的延伸
上述的判斷式,都是僅 2 選 1,但很多時候,必須是 3選 1 或 4選 1 或 5選1 ... 等等,這時候就必須使用判斷式的延伸法了,或使用巢狀判斷式,先看一下判斷式的延伸示意圖:
ifelseif
看示意圖應該大致上可以瞭解延伸法大概是這樣:
if ( 條件一 ){ 如果條件一符合,結束判斷輸出結果(如不符合繼續往下執行程式}
elseif ( 條件二 ){ 如果條件二符合,結束判斷輸出結果(如不符合繼續往下執行程式}
elseif ( 條件三 ){ 如果條件三符合,結束判斷輸出結果(如不符合繼續往下執行程式}
else{
//上面全部不符合就在這裡要給個結果(當然也可不要結果)
}

這狀況也常在日常生活可見,舉例給你看:
年輕女孩20歲時找老公的要求條件
if ( '高' && '帥' && '富' && '最好能夠會煮飯'){ 找了五年沒遇到 ;}
elseif ( '高' && '帥' && '富' ){ 又找了五年....還是沒找到 (現年已30) }
elseif ( '高'  && '體貼' && '生活過的去不必太有錢' ){ 又過了 5 年 ...仍然沒有 ( 現年已35 )...}
elseif ( '只要能疼惜我就好了' ){ 仍然槓龜.....}
else{
老娘不嫁了 .....
}
上面範例僅是簡單說明,在很多網站上可以看到這種判斷式的寫法,舉個例子(就文章點閱來說),有些站點會把文章人氣做變化,好比人氣提升到某數值時,就變成 999+ 或是變成圖片等等,下面來做一個實際的範例:
下面兩個範例,是用兩種方法寫出的,方法不同,但結果會是一樣的:
第一種延伸判斷式:
你可以下載下面 rar 壓縮包回去直接測試,或複製上面練習看看(因為程式中有附兩張圖,請自行右鍵帶回家 11上例完整檔下載:


巢狀判斷式:
示意圖:
ifelseif_2



上面兩例都有使用到一個整數的「正規表達式」去判斷數 $mun 是否為正整數,目前尚不談正規表達,先把最基本的練好即可。
結束程式時,使用 exit();
由上兩例可明白一個道理「戲法人人會變,各有巧妙不同」,重點是要能夠明白指令的使用方法。

再補充一個點,有時你也許會看到有一種判斷式像這樣:
$y=($x == '5')?"5":"10";
這種寫法其實跟下面一樣 ( 請對應兩段代碼顏色):
if($x == '5'){$y = '5';}else{$y = '10';}
意思就如同下面:
結果= ( 條件) ? "條件為真":"條件為假";
這種判斷式比較難理解,不過先知道就好,以後有機會再慢慢適應吧!
簡寫判斷式範例:

以上是大略介紹 if...else 用法,請注意判斷式還有很多種類,不過別急,基本功夫先練好,多加練習才是重點。
再接下去會開始一些實際在網頁上運用到的東東了!請務必把基本的指令搞清楚用法唷!

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。