anstd
No blood
|
分享:
▼
x0
|
[PHP][討論] 我的PHP學習筆記(3)└條件判斷式┘
作者:紅軍©2005-11-29 版權沒有,盜版隨便
前言: 在學習筆記(2)─變數中,最後用到了if...else... 這是屬於其中一種的判斷式,也是最常用的 既然如此,就由if來開始介紹吧!!
●IF判斷式 此判斷式的基本格式有三種
(1)if... (2)if...else... (3)if...elseif...
(1)if... if (判斷的條件) { 此條件為真時,所執行的指令; } 舉例
<? $a = 1; $b = 2; $c = 9; //判斷式1 if ($a < $b) { echo "$a < $b <br> 看到此訊息為真<p>"; //因為$a本來就小於$b,所以執行判斷式1 } //判斷式2 if ($a == $b) { echo "$a = $b <br> 看到此訊息為真<p>"; //$a不等於$b,所以不執行判斷式2 } //判斷式3 if ($c > 0 && $c <= 10 ) { //判斷$c是否在0~10之間 echo "$c 介於0到10之間"; } echo "程式結束"; ?>
其中判斷式3的兩個條件用&&連接 所以當兩者皆成立時才會執行判斷式3 接下來再舉個例子,讓你了解到if內其實也可以再用if
<? $money = 1000; $a = 2000; $b = 2500; $day = 3; //你可以試看看將天數改為1或2所得結果為何 echo "與她睡一晚要花 $money 元 <br>"; if (($money * $day) >= $a) { $money = ($money * 0.9) * $day ; echo "你一次包了她 $day 個晚上,打9折優惠,共 $money 元 <br>"; if($money >= $b) { echo "消費超過 $b 免費贈送冰火九重天服務"; } } ?>
這個玩一下應該就會知道if的運作方式吧 :-)
(2)if...else...
if (判斷的條件) { 此條件為真時,所執行的指令; }else{ 此條件為假時,所執行的指令; } 與(1)不同的是多出了一個else, if若成立,將直接執行if內的指令,若不成立,則執行else內的指令 不可能兩者都執行!! 例子
<? $a = 10; $b = 20; if ($a > $b) { //由於$a大於$b不成立,將直接執行$a不大於$b echo "$a 大於 $b"; }else{ echo "$a 不大於 $b"; //顯示10不大於20 } ?>
寫一個簡單的判斷式來判定使用者是否使用IE瀏覽器
<? if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) { echo "您使用的是IE瀏覽器"; }else{ echo "您不是用IE瀏覽器"; } ?>
在此例中,我們使用了$_SERVER陣列將PHP預設變數HTTP_USER_AGENT讀入 然後用preg_match()來尋找$_SERVER["HTTP_USER_AGENT"]內是否有MSIE字串 若有出現,則顯示您使用的是IE瀏覽器 若無,則顯示您不是用IE瀏覽器‧‧
(3)if...elseif... 這個東東嘛,你就想成是if跟else的綜合體! 先說明一下大概的架構
if (判斷條件1) { 此條件為真時,所執行的指令; }elseif (判斷條件2){ 條件1為假,條件2為真時,所執行的指令; }else{ 上列件都為假時,所執行的指令; } 與(2)一樣,只會執行其中之一的指令 若要增加條件,只要增加elseif即可 舉例
<? if(empty($_GET['myname'])) { //使用empty()查詢$_GET['myname']是否已有設定變數值 ?> <form action=<? echo $_SERVER["PHP_SELF"] ?> method="get"> 我的名字 <input type=test name=myname size=20><p> 我性別是<br><input type=radio name=mysex value=1>男<br> <input type=radio name=mysex value=2>女<br> <input type=submit value="好了"> <input type=reset value="重填"> </form> <? echo "<hr>請輸入名字以及性別"; //一開始因為沒有設定,符合第一層if,直接echo這一行字 }else{ echo "我的名字叫" . $_GET['myname'] . '<p>' //被設定後,第一層if判定為假 if ($_GET['mysex'] == 1) { //於是執行else後的判斷式 echo "我是男生<p>"; }elseif ($_GET['mysex'] == 2) { echo "我是女生<p>"; }else{ echo "我沒輸入性別,所以我是人妖<p>"; } } ?>
在第一層if...else...中,我們於else後加入了第二層判斷式if...elseif...else 並且於第一層if內,使用empty()來判定$_GET['myname']是否已有設定變數值 也就是說,若你沒輸入值給予myname,程式將會一直跑"請輸入名字以及性別" 直到$_GET['myname']被你設定姓名後,判定empty($_GET['myname'])為假 接著跑else後的第二層if
跑第二層時,繼續判斷mysex的值為何,看的出來這是巢狀架構吧 @.@ 若為1,則顯示我是男生 若為2,則顯示我是女生 若不為1也不為2則判定if...elseif皆為假,直接秀出人妖...
作者:紅軍©2005-11-30 版權沒有,盜版隨便
●SWITCH判斷式 某些if的程式,也可以用switch來代替 而且寫法比if更加簡單 switch基本結構如下
switch (指定判斷條件) { case 1 : 此條件為真時,所執行的指令; break; case 2 : 此條件為真時,所執行的指令; break; . . . case n : 此條件為真時,所執行的指令; break; default : 以上皆非時,執行預設指令; }
那我們就拿上一支亂寫的程式來改看看吧@@!!
<? if (empty($_GET['myname'])) { ?> <form action=<? echo $_SERVER["PHP_SELF"] ?> method="get"> 我的名字 <input type=test name=myname size=20><p> 我性別是<br><input type=radio name=mysex value=1>男<br> <input type=radio name=mysex value=2>女<br> <input type=submit value="好了"> <input type=reset value="重填"> </form> <? echo "<hr>請輸入名字以及性別"; }else{ echo "我的名字叫" . $_GET['myname'] . '<p>' switch ($_GET['mysex']) { //使用switch判斷式取代if case 1 : //若$_GET['mysex']值為1 echo "我是男生<p>"; break; //跳離switch case 2 : //若$_GET['mysex']值為2 echo "我是女生<p>"; break; //跳離switch default : //若$_GET['mysex']沒任何值,套用預設 echo "我沒輸入性別,所以我是人妖<p>"; } } ?>
兩個比較一下,用switch感覺清楚多了,不是嗎 ^^ 再寫一個判斷今天星期幾的小程式吧
<? switch (date("D")) { //以switch來判斷date("D") case "Mon": echo "今天星期一"; break; case "Tue": echo "今天星期二"; break; case "Wed": echo "今天星期三"; break; case "Thu": echo "今天星期四"; break; case "Fri": echo "今天星期五"; break; default: echo "今天放假,別吵,我要睡覺!!!"; break; } ?>
這裡我們用到了函式date()來當判斷式 D則是以三個英文字母顯示星期幾,如程式中case後面所給予的值 若符合則直接秀出來‧‧‧如果用if來寫呢?也是ok,但會比較複雜些 ^^"
|