php的流程控制
7 R6 o! P$ ?: d4 i) p2 A5 a1 c2 A/ E" W+ g7 C1 A+ [+ r- V5 F8 q& i
1、if……else 循环有三种结构
. D* N3 p) ?) q. q& U: v8 ~第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: 0 T8 _5 N3 D/ O" u4 q
# {/ M# e) X3 C9 K' g
if (a) { statement }
/ i( m( {" g4 w其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。9 U4 S x M2 ]' m! x/ y5 e% V
范例:本例省略大括号。 8 T6 A9 O% W7 V) j
4 q8 M$ _% J4 A! l( K* L) {<?php ; f2 @ s/ W5 d2 P
if ($a==1) echo "我爱php" ;
) i0 c( S: q' U; F; }?> 3 D$ p$ m* ^; g, @8 o# d
+ U- E( Z6 v% p& w5 P H' G
这里特别注意的是,判断是否相等是==而不是=。9 y$ s8 R3 t9 h1 }, K; f
范例:本例的执行部分有三行,不可省略大括号。
2 c( t9 m' }; t1 e$ }( z. n+ H4 N2 }+ O+ V; }+ s
<?php % x3 D/ [% j% w( ~8 o
if ($a==1) {
/ q( S8 \0 S/ U& R' x$ N& t( _. I, Oecho "我爱php" ; # [9 e& P' H$ O
echo "<br>" ; 6 ~9 H8 }8 h7 \) L( R( f V! P# t
}
+ N8 M' ~: f$ [$ z0 g6 h/ e7 [: u?> 8 f- _ h3 K F, N& q2 M4 s
( }) @2 j/ S5 s. |) w( w b, V
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
# N6 _. t! r1 T! _: a" C: o
, Y+ @: ~( i- s9 |4 oif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 5 e3 i# L/ e0 _; Z0 F u* e% z1 Q4 N
<?php
! i1 C3 ]- g) i3 ~0 u+ Sif ($a==1) {
5 G5 P4 }$ Y6 I7 u' Y5 x0 f. Jecho "我爱php1";
0 n4 O9 w! Q$ r T& ?echo "<br>";* _0 n# c( C1 n2 y* K4 N
}
) @1 ^0 Q; Y( D( z u% Welse {
0 D. z! }4 G. F' F* X' H0 L: K0 Qecho "我爱php2";& g0 Q" O! o3 d+ m( F6 ^7 h( D
echo "<br>"; 9 s7 ` y8 m7 F! X7 t0 r
} ' H7 `9 ]" B- |, V# b; F
?> & L2 [! e8 W8 Z2 W) c/ ~3 w
6 C B8 r: y; X* P& X第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。$ J8 n9 b. R" S" M: A5 ?$ u8 V
直接看下面的例子
: m+ J; y2 i1 R: A Q4 Z3 Q<?php
& ]! ^) ? n' w$ Wif ( $a > $b ) { 9 T0 _' i1 M: q) j3 J
echo "a 比 b 大" ;
3 H2 i6 g; L- x2 Y! q* U} elseif ( $a == $b ) { % d+ y% b" u2 s) Q/ m3 c
echo "a 等于 b" ; ( E/ u8 `& h& M/ `7 k- t, r6 A
} else {
4 R; G# f7 j3 u% hecho "a 比 b 小" ; ( x/ h0 I% n% i4 `& M7 {! w
} 3 F) {: V1 I* I5 d4 H$ G0 m
?>
- d5 r9 }1 f- X; a
% m4 S; b1 \; a; j2、for循环就单纯只有一种,没有变化,它的语法如下
4 W1 `% V# H, j$ u& Q: q; v" X" z4 P7 L* k: F; X( k& W8 m! A3 k
for (a; b; c) { statement } , e) D$ g0 d# N3 d. k# T# Z, o
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。; W, e5 W- |1 ~- G
下例是用 for 循环写的的例子。 0 d+ [0 U0 d8 K4 T5 T4 S
<?php 3 A$ u' a& P A5 ~$ R
for ( $i = 1 ; $i <= 10 ; $i++ ) { ! F/ L1 y4 z$ [/ l* _& S. ^
echo "这是第".$i."次循环<br>" ; 1 B' _3 s+ }7 T* @' K5 L* _
}
9 e& ]1 ]% S! }9 ~1 @& B' t9 F1 G0 w* Q?>
' f3 i. ~- Z7 ?+ b! ^ q$ q& e- S: Y* }) e
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。" h) f) I! L- B6 m
语法如下:
( a& _& e4 j `" ~switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
2 A% Q- H2 a4 X其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ' ^; M! t7 V1 E* N) n: c6 z
. b# Y; i. L. L, D7 a' `<?php
) C! \1 _, Q, P. S) D' v: ?! ^ ^switch ( date ( "D" )) { & }, |# }3 `. r! U; |5 k
case "Mon" :
9 n8 e0 _! \! P( T0 _echo "今天星期一" ;
0 l) C4 x- `; R6 V9 C) f2 Jbreak; * `! J0 w5 P& c6 A5 V0 a8 y' b
case "Tue" :
* o# U( Y L. [( Eecho "今天星期二" ; # B' Y, }) @9 | k
break;
* m% \& N! c7 f' ], h) \# }case "Wed" : 7 W8 [- C7 u- f% {" O7 K& ]
echo "今天星期三" ; , o+ N$ m0 P' T, r% \
break; : h! K! C4 L7 N0 B$ i7 l
case "Thu" : / q* ], M E+ B: o( w; r
echo "今天星期四" ; 2 p# B. X- G. c; i( x# K
break;
( G) h7 c) [% jcase "Fri" : $ x9 ?7 N% H: c# [
echo "今天星期五" ;
4 s$ D( Q R4 V3 c1 d/ s9 gbreak; - a% G6 c; c( ?8 {: M
default:
4 R* b5 y' s; q$ H6 \$ Aecho "今天放假" ; , M! P' `9 y9 x. B$ z1 P5 d- X+ G
break; 6 f& o- u; b$ B5 ]+ Q
}
; i: h7 `7 G f$ {- M. q* J* p?> ( v0 N9 r8 e* H' n
这里需要注意的是break;别遗漏了,default,省略是可以的。
+ v1 O# `8 s$ _% E( |! V( t& j很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。; G; ]0 a$ X! H
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |