php的流程控制
0 d9 f7 r1 `2 r: G) D
: D, Z, `' p! N* b3 G1、if……else 循环有三种结构
, v; j$ d" Y8 d5 u9 `6 }第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: # Q; N7 G T- k* W7 J" r! z
) r9 m1 d4 {5 [: _' E2 Zif (a) { statement }
* J8 T# e% b0 J6 g6 K其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。5 K# t. X$ h4 n
范例:本例省略大括号。 $ o8 |. a4 W! v& N% r L
7 h, V' D' x5 C8 l2 h! k
<?php % k: a+ [7 b8 C# C
if ($a==1) echo "我爱php" ;
# ?. a9 D3 p; Q?>
9 U% V& Q/ }5 v) U
! S6 O* h2 L9 {3 e9 Y这里特别注意的是,判断是否相等是==而不是=。; B2 q4 Q2 \8 b( q8 M5 w1 l5 L* M
范例:本例的执行部分有三行,不可省略大括号。 0 ?* g7 O7 k+ a) ^! Y0 T
' { F1 r. X! p( A6 R( R8 ^<?php 8 M* W7 k, o |3 w; A6 Z" o f
if ($a==1) {
2 o! `+ _+ [1 G' k( y- lecho "我爱php" ; 8 I7 C# h3 ]8 r: D1 I! q# P9 e0 b
echo "<br>" ; 2 {& @2 m+ L$ t1 k- @- U
}
- _2 [6 P$ o+ y' k) B- h, s?>
T# u1 A: ^5 B+ Y
3 W5 Q5 h' R. j. l4 j7 A' S第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: 7 M& I, ^6 p9 S
. P9 Q: v# c2 v8 ]8 z# n/ c
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 5 X. C3 S8 w/ ?0 }, }& R
<?php
" I8 I7 \2 D% a$ R: E0 `' D/ [; O/ `if ($a==1) {
, `/ {* Q" ^, c+ f+ xecho "我爱php1";
! ?5 L: ?# \- O" q: `0 Q) {7 O; _echo "<br>";: X# m; i- \/ J+ h
}
( ]2 |+ Z) {8 X- melse {$ b" ]: t; d) D, _
echo "我爱php2";' X; S# \& Y& I. ]8 q; Y( F
echo "<br>"; # |1 b1 H0 {1 ? e3 H; c$ J
} $ `6 z* h7 h: G" D% q1 q
?>
: d5 H& x2 |6 e z% ?7 f: [
. y3 T y) I. w$ @第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
! R+ E5 v6 J: l1 f' i# x) k2 L直接看下面的例子
) M7 m7 z1 B/ J<?php * c9 A: K( @) n$ u6 H8 |3 O6 u
if ( $a > $b ) { ) f$ h1 i8 B# z9 o9 y
echo "a 比 b 大" ;
3 u& u/ J- }4 A4 j6 r} elseif ( $a == $b ) {
) E }4 }/ h8 `8 a- A, j becho "a 等于 b" ; % Y }8 W* o4 E) A7 ^* z: B1 q
} else {
4 E" u" C- o6 E6 l" Oecho "a 比 b 小" ;
7 }" b- Y4 n2 s [( b- I2 V} % s4 y; D2 E8 G7 G5 p
?> ) ?0 f$ J& U! x* F7 ?; o2 [
5 ]6 b) a* E2 m, y. h* h( J( G2 o2、for循环就单纯只有一种,没有变化,它的语法如下 # G+ l/ }4 R$ t2 K9 |4 f
3 p6 o( a8 v* ^6 ifor (a; b; c) { statement }
1 L+ V8 j! K3 D/ I其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。8 d$ ]8 s* q6 H% ^! w
下例是用 for 循环写的的例子。 , M" \; b! M1 Y
<?php
5 f9 e d& n/ y3 x8 [# q' Ffor ( $i = 1 ; $i <= 10 ; $i++ ) {
# b7 p% S3 [' x* A2 d6 z9 |( secho "这是第".$i."次循环<br>" ;
2 \8 T4 _/ K2 x) M6 j. l* K}
" v) e- t* Z5 R* W0 D2 c; G5 O" g?> ! r+ L: {* o8 {; O) e
. V+ l, h. ?8 F3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
2 s7 F1 X! T5 o: M语法如下:2 _5 R5 G: c% `. |
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
& u: Z$ @7 o9 |; ~; w- m其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
3 n; H5 d, G8 Z. ]/ L( K) F$ G/ n! F# M( V$ T1 j0 {6 [' l
<?php % @$ ^6 {. J; A1 t6 G' s
switch ( date ( "D" )) {
$ t+ N: Z; c: r+ \! i# zcase "Mon" :
: b1 S7 P: s0 z4 c; n3 j2 s' T1 ^echo "今天星期一" ; 5 ?$ }" e- F+ j
break; % O( P! T& z+ C; ]# Q; M
case "Tue" :
9 K8 _4 _* o8 D. Z' R0 ?1 ]echo "今天星期二" ; ( z+ G7 Y+ Z. I$ Z8 p& H
break;
8 d- W5 A y" z: acase "Wed" : : [, t0 F. E o# m& |
echo "今天星期三" ;
, R, r% N* |1 B8 O! Xbreak;
: l- L' ?8 ^7 D1 c' E9 e( B2 Icase "Thu" : ) V% }% e: M c
echo "今天星期四" ; & O0 R. ~7 \: |' U2 K
break;
6 h, b, ]& V1 z+ x7 u# gcase "Fri" :
# ?0 Y1 }" b# jecho "今天星期五" ; 0 ]/ X' b) ]7 f) U5 O8 S4 h# K8 o
break;
4 Z9 y3 v# A7 o2 X9 ndefault: ! A/ Z8 c# }# h1 c
echo "今天放假" ; 0 T. a5 N) Y# I2 [4 ~0 ]
break; ! j$ C! O3 l+ ]! `7 s
} ! |& q: A/ ?9 f' }* \) j
?> $ w5 t6 V" D$ ^; S" Y$ `' P
这里需要注意的是break;别遗漏了,default,省略是可以的。
6 g7 Y. I( I1 ]) t/ v3 a很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。8 m7 w+ d9 o; t7 p1 u
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |