php的流程控制
$ x; @, H- d# q% L9 C4 p
* L3 K" k% d$ V1、if……else 循环有三种结构
: x' h4 K& N' y+ @第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
2 B4 o9 x/ f0 n6 x9 u6 c) }
1 p- A: W: W6 J9 d/ @9 jif (a) { statement } & Q( x) n/ X9 B, v3 U
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
' D% U5 s$ g0 d$ U5 V6 j! c范例:本例省略大括号。 6 V8 O7 o, P8 g! l G
7 H3 {/ n" E# A( ^5 y! s8 Q$ m! o) x<?php + Q" s" M" z2 q: h! l/ t& R) [
if ($a==1) echo "我爱php" ;
! T; ?2 }: t6 L) Y, O) Z. }?>
, B) o& ?; P9 O0 H; l" [! Z" F5 n# D" e. d$ i( L3 J5 c. B
这里特别注意的是,判断是否相等是==而不是=。5 ?% Z3 g6 J1 L6 r+ c1 p9 r' L
范例:本例的执行部分有三行,不可省略大括号。
1 d+ e; f" {+ r# @- C# f
B+ D+ ]' y3 |/ w7 x9 H5 g3 J; m; r<?php ! Z9 @$ c3 r+ E9 l/ o2 U/ W
if ($a==1) {
0 y/ p! ?( Y7 Hecho "我爱php" ;
Y' m, @ `. s# P8 S- [* Jecho "<br>" ; 5 N1 w+ O2 | |* p9 z6 i. S1 T
}
n' m/ t, B! n?> + @) s: U: _7 Z% E% j% i5 j
3 [/ x6 @4 {8 [ _) U
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
$ ^1 @# U5 ]. U7 a9 b! H* o0 _7 `+ r4 u; ]) \! V4 G
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
! U8 _/ G( _5 T( |. f0 L<?php ; g& s; P3 k5 L' I
if ($a==1) {
5 V6 K# l. G- Recho "我爱php1";
- N) j* w1 @- oecho "<br>";
- L. ]5 ? u) f; D} $ Z( q: n/ o$ P" B% G) {( l$ w
else {
+ y4 x5 M, f5 m) Wecho "我爱php2";
& ^% }' y M6 i, [3 O" m3 s: becho "<br>";
9 L2 G) `+ C1 N! u4 O& m} - E" \+ }: T6 U
?> ' w( d* \9 {5 y1 Y9 z3 R3 H1 a# ]
' t% D. R- F4 J! r第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
# L" ~' f' M& t+ ?! f! ^5 F( {直接看下面的例子
& i8 |1 X5 X. [* @" c<?php 9 q" ^$ J* |2 ?( @& \
if ( $a > $b ) { ' s4 r c7 P, B7 _3 }) E, M+ E, g
echo "a 比 b 大" ;
" L7 D7 b) Z, K- Y} elseif ( $a == $b ) {
. o- V2 Z. r' ` G' _7 Pecho "a 等于 b" ;
8 b* C. y( i, m. k1 D) q) z} else { & @9 }- ?% i! k( L/ ]+ d
echo "a 比 b 小" ;
: Y* U" d. _2 G" l1 O1 ~$ L2 B} 5 ^! ?; ~4 u7 Q& C+ C$ F
?>
0 \0 [! }8 B' R: t% V" ]) ~1 M
$ x) M) D# w5 S& H# f$ S. m2、for循环就单纯只有一种,没有变化,它的语法如下 4 V: _' b% K1 E; f3 Z5 K$ I5 \
* g* E2 `& D3 j \/ N8 x/ R
for (a; b; c) { statement } & H7 n) @3 |3 `2 H; ]/ q. x
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。: U) v1 Y& G! K6 L
下例是用 for 循环写的的例子。 4 ~9 b% O5 G8 o- G, X$ o$ T
<?php
% G# _$ m; D! b& Nfor ( $i = 1 ; $i <= 10 ; $i++ ) { . E' }; x6 J+ p2 O
echo "这是第".$i."次循环<br>" ;
+ s; u6 C8 _* {4 g) O) x}
, p: ^8 s0 x. T `. p7 Z$ ~?> ) i' N8 f$ Y1 h4 M
! |) m! N' a" L6 Z7 j/ u( R( ~3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
1 P9 I7 T, C: \语法如下:
' l* ~2 ?7 g' u, t. `6 t; Qswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
. w4 b! z( V8 m; {其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 % f- j2 c/ M: J' |( m
5 G$ o" u) \: |& T. ^+ j" P5 c: F<?php 4 Y3 L, |8 }9 ]8 n% f
switch ( date ( "D" )) {
2 @; T, \" k( Y) T" d. Ncase "Mon" : , i) S1 j5 U V
echo "今天星期一" ;
8 R4 I% l9 _% I0 \break;
3 [7 ^. [5 g2 j$ g) D$ ~& n1 J% _case "Tue" :
* B; W$ H; m( \# U1 kecho "今天星期二" ; ' g3 U6 E( W! n" W
break;
6 y# A, z1 O' A) I( icase "Wed" : # [( G" @: I/ @" w
echo "今天星期三" ; * x1 {& h) X# y
break;
7 p0 v- U) e# L6 ~case "Thu" :
* h. |/ b- X; ]; f1 Uecho "今天星期四" ; 5 u: ^' Y- z7 q9 k9 o! O/ D
break;
! g* S3 k( R8 u* `4 ncase "Fri" : , L: {. O) p% ^2 P0 `) z3 k3 U
echo "今天星期五" ;
; o9 Y, Y1 k5 z6 F6 f/ [break;
5 t: E6 ?* a- q5 Z' C% udefault:
5 U( X% B4 e( h4 Z, I' u; Becho "今天放假" ;
. }7 }! l1 H. H5 F6 g9 s2 Fbreak;
% [" C: f; f( [% [+ |* r8 \* o+ C} 5 _3 K# P+ u: `# _1 v& ]1 Z8 ?
?>
0 W- k7 H7 ^* l# G/ u/ E这里需要注意的是break;别遗漏了,default,省略是可以的。* T) I8 g# h8 J) C
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。) @' |: W# H& c* c, M' u+ u' Z
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |