学习目的:掌握php的流程控制 oW0gU?Rr)u
!|:RcH[
1、if..else 循环有三种结构 $hh+0hs
:?HSZocf
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: %'N$lF"]
`-VG ?J
if (expr) { statement } XZ.7c{B<
wJ6_I$>
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 :qxm !P
RX:R*{]-
范例:本例省略大括号。 1p8:.1)q
;0IvF#SJ(.
<?php `9/0J-7*
if ($state==1)echo "哈哈" ; oP/>ju
?> .iFViVZC
^6Yd}
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 6\NvG,8
qQ^d9EK'?~
范例:本例的执行部分有三行,不可省略大括号。 swttp`
6N"m?g*Z
d
<?php (Aorx #z
if ($state==1) { Zr=ib
echo "哈哈 ; 7 0_}S*T
echo "<br>" ; ^f9>l;Lb
} p"2m90IO
?> Cl,9yU)1n
elu=9d];@
*-0>3
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下 jh[
#p?:
-$.0Dc)3!
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 gNqAj# m
<?php axX{6
if ($state==1) { FC{})|yh
}
echo "哈哈" ; a0PE^U
echo "<br>"; `M:DZNy,
} 42&v% ;R
else{ ML=eL*}l
echo "呵呵"; zX98c
echo "<br>"; `?l3Ct*
} 6D|p Qs
?> /hL\,x2
g0PT8]8
Xx_tpC?
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 A_Rrcsl4
tAERbiH
直接看下面的例子 '3^Q14`R
ioxbf6{
<?php 3A_G=WaED
if ( $a > $b ) { \^jjK,OK
echo "a 比 b 大" ; C0QM#"[
} elseif ( $a == $b ) { k)cP! %z
echo "a 等于 b" ; 6hO-H&r++
} else { *Ddi(`
echo "a 比 b 小" ; [
7g><
} >%u@R3PH]
?> AotCX7T2T
#.H}r6jqs
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 X3<K 1/<
nob0T5G
2、 for 循环就单纯只有一种,没有变化,它的语法如下 M ,`w A
zEj#arSE4
for (expr1; expr2; expr3) { statement } ?E6^!4=,
+1QK}H~
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 ;r.EC}>m
Lkn4<'un
下例是用 for 循环写的的例子。 -jB3L:
z8E1 m"
<?php &kzj?xK=(j
for ( $i = 1 ; $i <= 10 ; $i ++) { A
(okv
echo "这是第".$i."次循环<br>" ; c+g@Z"es
} Br!9x{q*
?> k2r3dO@q
Q,gLi\siI
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。 4jX3lq|
LBat:7aH>
语法如下 7CGyC[[T~
z8"7u/4v{
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; } FQk!d$BG
?{6s58Q{
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 E8ta|D
nn+_TMu
<?php u#@RM^738d
switch ( date ( "D" )) { {e"dm5
case "Mon" : (5a1P;_Y
echo "今天星期一" ; 1y(UgEg
break; t0Mx!p'T
case "Tue" : wP<07t[-g
echo "今天星期二" ; z=g$Exl
break; pvF-Y9Xb
case "Wed" : vcv CD7MD
echo "今天星期三" ; VL\t>n
break; q9]IIv
case "Thu" : /&^W#U$4
echo "今天星期四" ; V
kjuyK
break; d|lpec
case "Fri" : [%pRfjM
echo "今天星期五" ; 36vgX=}
break; cj$d=k~
default: F9a^ED0l\
echo "今天放假" ; r^1+cwy/7P
break; X!>eiYK)
} S\*`lJzPM
?> E=$p^s
e#S0Fk)z
这里需要注意的是break;别遗漏了,default,省略是可以的。 9t$]X>}
?6"{!s{v
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 H,y4`p 0
tU:EN;H
今天就说到这里,明天开始说数据库的使用。