php的流程控制 2 a9 ]5 y7 w/ F' W# k
* x9 x! K2 c/ C3 X! l
1、if……else 循环有三种结构+ b* d& O# H& x0 p0 S
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: / P6 P- k, s9 J4 M
) C- r& n0 |6 g( K7 Q- W$ @" b$ A
if (a) { statement } $ [- M7 S/ U$ C3 L; K) ]
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。4 ?0 z! r( i3 k- p
范例:本例省略大括号。
6 R9 T: y. `- W" S8 S, g+ s% U
; J4 b# p. |+ o$ {8 \<?php 9 i6 ?/ o6 j1 J5 a% l$ b
if ($a==1) echo "我爱php" ; ' H8 l+ v- M/ p1 Y) \
?> 2 X! Y% j ~6 q' g0 b2 G
# O! e4 \6 n3 r& J& M S4 |$ M这里特别注意的是,判断是否相等是==而不是=。
/ s/ ]: `2 c& k: S范例:本例的执行部分有三行,不可省略大括号。
; S) p- ~+ X) b5 I$ m2 w% E) j3 h- d& F5 `4 S% d
<?php
: K6 ~/ v, t' a! U5 d' K3 jif ($a==1) { ! I0 B4 x$ A+ i. O
echo "我爱php" ; V4 e! ]9 \4 s8 O: k
echo "<br>" ;
& W5 W# u5 l2 e: t" f} 2 _1 o4 E: }' t O8 r
?>
' ~! j- D3 l" y z1 V! ?9 ^: [: M4 V" f k+ S3 O
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
' K3 _) M$ i$ S3 w7 |. W3 r6 k5 E( t4 m4 t4 i& Z! Z
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 4 b$ H2 ?, J. r# z" b
<?php 0 @( e: h2 e* v4 y! _
if ($a==1) { 0 ] c+ \0 f8 q7 V4 [# J
echo "我爱php1";
2 M% u3 N# c7 M" Zecho "<br>";
7 `: r+ ?$ x9 f" V o1 _}
4 A {) `7 y4 X& A% S: Jelse {8 B8 c* }) c7 B9 d" r. e" D3 M8 p
echo "我爱php2";
$ m9 l5 C0 ?+ N! Aecho "<br>"; " `- v* i' V) ? f( O* J$ s
} 6 j5 r" g) w, u' ]
?> 7 w! t+ l6 S8 i1 U% i
- M) e, Y/ s8 _- G* w第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
9 X7 J2 R: O5 l. t直接看下面的例子
6 z& y' p* `5 T; ]. W/ W( R; z<?php " z2 f* E# d" B. J
if ( $a > $b ) { 9 v: `# V. g" H2 q; [; ?
echo "a 比 b 大" ; & {# y6 u4 Y! F( G7 Y
} elseif ( $a == $b ) { 3 D' h( P/ V! \# G+ `( O. D
echo "a 等于 b" ; . D0 O6 U# n' E
} else {
# ]6 t; W6 f6 [1 k5 Necho "a 比 b 小" ; 9 t0 E# d, p8 ?9 [
}
6 f( s6 n% I2 s; M, j: C r! x?>
4 Q( n; k. ]% B% ^( f* P; y. _) }# R% G. l+ ]- s2 L3 Q
2、for循环就单纯只有一种,没有变化,它的语法如下 % l: q/ ~! ?% Q: q2 U
6 f5 L/ D+ r/ p) e5 jfor (a; b; c) { statement } ; r4 f& s+ X7 W( k, K) d
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
& O4 m$ x+ Y! M+ T5 ?- D* t* i S下例是用 for 循环写的的例子。 , Q B: `, _+ E, M
<?php # L, T6 s7 ^: G" b. z
for ( $i = 1 ; $i <= 10 ; $i++ ) {
5 `( }9 p0 l9 C/ Fecho "这是第".$i."次循环<br>" ;
: w! m% D# A0 z; ?' D} ' i: f" {9 u9 T- h6 A) H% h
?> # T; M- G% {8 g' m+ A c4 @3 Q
6 y% ^8 v6 D- O, ~3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
* ~+ A; A7 n# S1 G& W语法如下:
( d1 q i' h. Nswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
* {; A- Q7 f0 \7 m( l8 N其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
2 c: H: h. y! z% X' G" @- \6 p, v" o" E& h" [% ?: {
<?php
* b5 j7 ?9 H4 i; v- ~( A0 Z( a, Gswitch ( date ( "D" )) { ( f( n4 v) s2 Q, b ]6 Z" Q0 z
case "Mon" : 9 ?+ @+ U- M5 I( X/ {( X
echo "今天星期一" ; 6 @* i1 P7 O8 t9 m s/ u
break; . a2 x9 Y" Q' [
case "Tue" : + C! x* [' ~7 K3 g, [4 h; G2 k
echo "今天星期二" ; 0 h% @. p6 J* U$ I! {! A$ A
break; 6 c1 P; g% ^. q1 x. I7 Y# K
case "Wed" :
/ w) a( X- }, Oecho "今天星期三" ; 8 _& E$ y5 X( C" o! u; ]# f6 _
break;
' Y1 t. V" t Y# ? A0 w6 [* vcase "Thu" : * b' t0 S7 H! X0 N8 x& Z6 A
echo "今天星期四" ; 2 a/ t4 N% A! X) o- b5 Z
break; % v' I- h8 }: F/ o
case "Fri" :
" z3 e' n6 g- ?* e3 Yecho "今天星期五" ;
3 K9 q" b" ?9 h, v, ~* |6 `: pbreak; " y7 E f `6 f9 |" I/ ?
default:
3 b r: a, P' [echo "今天放假" ; ' p R! q% q# A
break;
0 q3 M' U! Y5 T% ^4 R: Y( m}
8 x' u1 e3 p5 T/ k$ C* s?> - k# ?, D ?' X2 P' S% c, q- n' N
这里需要注意的是break;别遗漏了,default,省略是可以的。* @- U6 ]: D$ U6 }! I
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。; d) y9 }* @9 Y% y2 F
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |