廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 8416 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
anstd 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
頭銜:No bloodNo blood
版主
級別: 版主 該用戶目前不上站
推文 x27 鮮花 x638
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 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,但會比較複雜些 ^^"



獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2005-11-30 02:19 |
devilchc 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x18
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝用心!及慷慨分享喔!


獻花 x0 回到頂端 [1 樓] From:台灣 | Posted:2006-01-27 16:34 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.051303 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言