广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 8431 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.092140 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言