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,但会比较复杂些 ^^"
|