php的流程控制 . E4 A7 y1 L |4 G; y3 R' a& A/ I
" v/ V8 @3 k2 P# f7 k8 U' J
1、if……else 循环有三种结构
4 g. A' U: H/ V- B第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: 7 b2 {' V0 N8 D- g2 j! |1 r% Q
0 l, T6 G7 n* C! W$ I6 |if (a) { statement }
' e& J4 g8 C2 E: D) H. b2 e" c其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。; W. n+ j1 X) Y8 v
范例:本例省略大括号。
$ Z! I5 J9 k- h3 M5 a; {
0 l% |: h# ?0 c6 y, _3 r; A<?php
4 w) _" M, C1 H% t) y* ~0 ?2 P. uif ($a==1) echo "我爱php" ; 1 X) h9 Q4 J) v
?>
8 U( ?" y Z2 Z: T0 s& y8 Q& a) s" z- [- m" v6 _# q) Z& M
这里特别注意的是,判断是否相等是==而不是=。
! d$ Z( g5 \8 B& s, z范例:本例的执行部分有三行,不可省略大括号。 - m x5 O. y2 j) ^! W, g
) M; k. e( N/ p# z# M<?php 0 r* o- _/ U8 }# d: c% p! E
if ($a==1) { ( C) [/ V. z) q" [5 g! m6 A3 V
echo "我爱php" ;
+ r" }7 o, p# F& S" m- g1 B, Xecho "<br>" ;
/ G8 H9 [8 b! U} # u& f: H3 C7 [
?>
, c$ d: c9 l3 S8 a# a0 s: I1 s1 l) c. b' L
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: # u8 z6 ~% Q( e! l8 j2 u+ j1 q8 e0 g/ G
8 V; @8 H1 V4 t! A y \% Nif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 ' j+ S" y8 n* g& H
<?php
- ` \( i2 o! h& ] v2 Gif ($a==1) {
: v9 ^5 Z4 S$ x! Xecho "我爱php1";
' U: U, p+ s% V0 lecho "<br>";
( J8 E0 w1 E3 R$ o3 M j} & G: K5 n9 m- ~
else {
* B: L, h& L3 W6 t. S1 R/ ^6 Aecho "我爱php2";
( r1 E9 Q2 Q& a6 I" T9 `" ]echo "<br>";
" i( M1 k) V0 H3 Y! c6 B. V} . f4 f' c; o, ]) x6 o
?>
; ?, k) v: f T) z; F
2 A( H- k1 {) Z& D; v; Q8 l第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
2 M& D2 `" s+ I7 F+ g5 h直接看下面的例子 8 x$ [: \- p2 d: D+ ~3 u2 a
<?php
# h. v& l9 o# O# w: Z% }if ( $a > $b ) {
1 Q$ l) Q( a- ]( z5 decho "a 比 b 大" ; 9 K8 I/ }- \1 {( L5 H, Q
} elseif ( $a == $b ) { % z, ]: k5 a+ g1 N) Q! c4 i9 g% y
echo "a 等于 b" ;
/ m/ m {7 I, m1 m} else {
" k9 ]4 S7 j0 k9 [( z% Vecho "a 比 b 小" ; 6 S1 ~, K) p3 p# D8 h
}
. v4 D9 @* k2 m# u1 V& v G2 g( W?>
) X( M' Z% k$ k: J% {1 O) B
" [; A8 } {" S. z; |2 U2、for循环就单纯只有一种,没有变化,它的语法如下 " K+ e, _! h, X8 v
7 Y( Q! g0 L0 _1 [' K) rfor (a; b; c) { statement } ' B- o- `. M! R4 v T) I
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。# T0 m7 i0 T$ ^) { J7 G5 z# m
下例是用 for 循环写的的例子。
3 c$ n j8 z9 @; n( @; i/ h<?php ( P9 b4 q6 r! u: B
for ( $i = 1 ; $i <= 10 ; $i++ ) {
( M$ v) ]# \' Q9 n/ s) t7 eecho "这是第".$i."次循环<br>" ;
9 h+ @0 r; P {' S6 g}
3 x2 q: ?7 e3 f$ b6 I( |$ o4 O1 r?>
9 K' L' T8 y, r9 B: w1 d9 j0 A' X N) c& t4 Q i
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。, z p" b; Y8 |9 l. d6 W- \7 T# A
语法如下:* C \! L: R& h( [
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } ; c( l$ ^' y) V+ c. S
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ( Q- O9 p0 a6 u' L4 d4 R* n
9 P8 ~8 T, u- O: m<?php + Q' G+ W# W. ]# O5 v; o: F
switch ( date ( "D" )) {
' T' X7 K1 A1 l9 n5 |% scase "Mon" : 2 w& {. Q g* Y5 u$ k; l" M+ V! a
echo "今天星期一" ;
6 R4 U( b6 o+ X; E5 a7 [" {+ Fbreak;
+ ~' Q; D8 m# S' R7 Lcase "Tue" : ; s& c7 H- c. H) u9 L
echo "今天星期二" ;
+ ~' q' Z, d1 d& ebreak; $ C3 t/ V& B5 C- b
case "Wed" :
6 |7 P4 q* u8 S T- W& s/ k0 Yecho "今天星期三" ; " r R' c" o) d5 X4 ~3 _/ y" Z
break;
0 I% t! D7 F+ P" `; }case "Thu" :
/ `8 z7 q2 [* N% n# s- Techo "今天星期四" ;
- j: r M u+ d- B/ ~' cbreak; / t6 n, q' a2 @ y
case "Fri" :
1 ] b& i9 F& \4 g, o6 zecho "今天星期五" ;
- @3 N$ r( Z% Abreak; 4 t3 [ |# \0 b
default: * ]4 N8 e7 e$ K, o% }% {
echo "今天放假" ; " W; R5 W. l' }
break; 7 i1 c+ \- L4 ]5 m
}
* N% p$ n$ d! E" c/ b* O5 k( j* Z2 s?> 6 @) ~9 v5 |* q# ~ u& r
这里需要注意的是break;别遗漏了,default,省略是可以的。$ e' G' |. z2 r: Q* v! Y
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。% |! V& [; M! B* B1 \
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |