php的流程控制
/ C/ D7 r1 S5 S' O1 A0 R& G2 H7 }$ V: |, W B+ p
1、if……else 循环有三种结构9 n$ W! q* f) X. ?! w3 @" Y; e/ b
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
L9 d+ B3 A* w9 p2 u9 d0 R! a+ C# x; x- y+ {8 p: n5 g6 Q
if (a) { statement }
8 Z! ]7 p$ N G- c; w0 T) g( W其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。) O/ x4 ~4 M/ m* m+ @
范例:本例省略大括号。
5 f! y2 P0 u$ R8 M0 _3 N+ ?/ C2 _$ q `2 z7 j0 W/ p
<?php
7 f! b6 _; ?2 W' J: N2 s, Uif ($a==1) echo "我爱php" ; 1 U& m# a% j5 q# F- L
?> + [) t% E- Y) N, L+ E1 I+ |
, P6 ^5 K# G5 T0 x这里特别注意的是,判断是否相等是==而不是=。
; p3 I/ [$ F o: c5 g j1 L+ i范例:本例的执行部分有三行,不可省略大括号。 / Z% E$ ^/ p% o' ^0 n( f. H
# ] i$ [3 E" t1 Q<?php
' Y( X$ E O* ~4 [# T( Wif ($a==1) {
. m( p( `7 H9 I8 a% c: Cecho "我爱php" ;
3 {. m' Q0 x. R' F9 \ N) ?5 Lecho "<br>" ;
Q4 A1 F+ q$ U8 i2 i0 F" P} Y3 U# m4 V$ A* t3 m
?> / L1 E6 G, O" B t
1 `4 o0 F/ {# K7 y
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: 5 d6 [! x! u& C" T( f, w" |, S% }
5 O, E8 N8 h- S8 w/ e9 rif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 3 H0 v" O. D' @' J, x9 a/ Q
<?php / d; `* |/ Q) O) g1 A
if ($a==1) {
@, q* N- V! H" p& B; V+ Z' H. Pecho "我爱php1";
7 I' {7 f! A! \" L& j( recho "<br>";
8 C2 g! q5 e" `! Q; H) B+ F}
0 X& W$ z7 O1 G5 L9 W5 M2 Zelse {
+ U9 Q. B& y' g' G8 e7 Y; Uecho "我爱php2";
( q4 U' u' \$ Y* k K, G& g5 Iecho "<br>";
1 ^* R# F' H* @9 u) m/ d; T2 D. w}
8 B4 O y5 g, J% U/ n! c# c?> " m9 j% O( A2 }: e. W/ n
4 |0 A7 j2 A1 m第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
3 [5 ~6 T& R% Q5 W. b( @+ h- J直接看下面的例子 7 H `8 R/ o- n3 p9 g5 G# w( X
<?php
7 M. ]' k" m$ W w. N- gif ( $a > $b ) { 1 q( p1 Z4 ^/ D! R
echo "a 比 b 大" ; 9 j! _6 t: |# o) l+ h
} elseif ( $a == $b ) {
" _: a1 e2 ` F: p6 R9 M( P; l3 gecho "a 等于 b" ; ; C6 `0 S& P' P6 z5 R, K
} else {
9 |# s' l( I( ~" v0 Pecho "a 比 b 小" ; , }# f8 q; O9 l8 R0 A, q5 R% ]2 N
} 0 d2 {, m8 E$ T3 E, ?: |/ s' y" i
?>
5 ?4 r5 i9 w1 p' H: C1 y" l$ v" |" _1 L B6 D* O! P
2、for循环就单纯只有一种,没有变化,它的语法如下
, M% l! n. F/ F9 _; P
/ P' Z9 q8 _$ U2 E* }for (a; b; c) { statement } ' T: j0 ~1 d1 W! q, H
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
# i7 O0 N0 k5 p, J& E: m0 a下例是用 for 循环写的的例子。
8 D7 p- S8 Z7 h<?php
+ {. j- g2 x! t' Ifor ( $i = 1 ; $i <= 10 ; $i++ ) { # F+ R/ h, m+ C1 i8 c- T
echo "这是第".$i."次循环<br>" ; l0 d" t9 b; a
}
' [7 A) x; N" W- }1 ~: C?>
4 l9 c" T$ \: b! J, s% e* G/ d% c7 s5 r
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
3 `; x, v0 y6 ~$ l# G/ y1 P语法如下:
7 b$ _0 _" \8 x" S) c$ o# yswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } N# Z4 s2 g# P7 k% A
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
# X& D" E8 c4 G1 `4 Y+ ^# M2 q. B
: J+ w- A* M* K7 c4 ?2 U" n& t4 B<?php
' Y8 C2 q2 `; Lswitch ( date ( "D" )) { g( a* Y: I5 ?, F( b: L K; @
case "Mon" :
& V0 j: G! r, `( k$ R9 T/ G6 Becho "今天星期一" ;
, F o1 c/ Y# w+ O, d: M" S# Cbreak; 7 L6 q/ ~5 Z+ {0 [& A, y. j
case "Tue" : 8 D+ V2 Z1 x: c2 n
echo "今天星期二" ; + N! U9 m1 r0 h, P
break;
/ J% L; h& R" m/ u. n4 o# N" Ycase "Wed" :
7 \ _; T8 D% t' e h8 w3 s9 L, _echo "今天星期三" ; % v" d: l' q# B, Z' K" x
break;
/ R+ Y" U" O$ \! {1 h8 Scase "Thu" :
% D% X2 }" c7 L, necho "今天星期四" ; 2 q( C" x% m2 K% @$ {$ a
break; ! G9 r$ P) [ G) Z& D$ |' o
case "Fri" :
% z G0 ^- e$ V8 M" Wecho "今天星期五" ;
? b' s5 Y6 V" j% u+ \break; : `7 Z% h+ S0 A' m' C3 j; p, c
default: 6 m4 u; n/ W7 I! L. i* E
echo "今天放假" ; % e8 L H t+ i( K* ^7 v' k* j
break;
3 }$ k4 R! K% Y a2 u M1 z}
$ f& m1 \5 d5 n& x?>
+ e8 @0 Q! ] @# F( Z这里需要注意的是break;别遗漏了,default,省略是可以的。: T- o9 D0 ^% E5 @, d& K2 q
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。3 L1 m" e$ q6 p0 a2 U. h3 ?$ F
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |