php的流程控制 ; U( D+ ~) q0 t/ O
8 p% R( N+ s c1、if……else 循环有三种结构
3 j6 E% A2 V* @# C第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: & A. W7 a/ W: ?( _# W; S% K( F/ w% g
! L" F: [: B& Y! W5 E! r
if (a) { statement }
% ~' s* i2 Q& F: s# s; S6 h其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
3 J+ l, M( ?# _范例:本例省略大括号。
4 o( ~. R3 f; B( a
7 ^) h! U) R' H6 v% u<?php , n* f7 i% j9 Y# q' g' Y; T
if ($a==1) echo "我爱php" ; ' ?7 x0 ^1 U$ I! W
?> ; `. k9 h" }, o3 `
/ Q+ x0 h# @9 H: g6 w3 [6 G4 c
这里特别注意的是,判断是否相等是==而不是=。
; i2 I+ N6 ]4 f7 C( F范例:本例的执行部分有三行,不可省略大括号。
8 i; y6 a, j/ m0 q0 A9 a# E; V' b7 l! z
<?php . f. O4 c2 _5 a
if ($a==1) { 5 W; |& L% D V$ I
echo "我爱php" ;
3 \9 E, u4 @; G4 n7 Oecho "<br>" ; 3 O8 \9 e$ [3 Y. I8 _
}
) e8 e5 |" B3 r, ^9 o$ G?>
* t. r3 m; i) [
+ b$ q' Z. X3 N. B1 S6 C第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: 4 ]' z1 O" H. T/ k
5 V- S8 G7 K4 t1 d. e7 G1 r- Yif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
4 [. ~8 a7 u$ O7 o; S<?php
* }5 L6 P& C* q: pif ($a==1) { - _! p6 @6 I0 s+ ~0 c& O1 ?9 w \( v
echo "我爱php1"; - r9 `+ Q. @. ?9 I* `4 _
echo "<br>";. ?; C( e3 S: X9 \
} - I+ o6 p4 F' V3 d) B) F3 x6 [. T
else {* o3 W" m: C9 Z8 i& m% h1 Q
echo "我爱php2";) y5 q& w! r" Q" h
echo "<br>"; , @1 P+ s' S1 m- Q% k' X
} 9 q) V0 n. x! \
?>
. F# R: W# m. P* }+ b1 g8 X" x h1 p3 K$ b, l* Q
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
- L* i% C5 R" z. m直接看下面的例子
+ Z" f( O+ s4 E% m( e: K: A<?php y1 [: H/ l' e9 g" u" ~7 g5 m
if ( $a > $b ) {
1 ^* j9 k$ L( ]5 J5 l" becho "a 比 b 大" ;
! V, ~/ Z% h. M} elseif ( $a == $b ) { 5 Z, J( q* D& T0 H' D
echo "a 等于 b" ; & q1 o$ x+ f$ P
} else {
8 M" N/ R6 u9 U4 e/ ]7 ~echo "a 比 b 小" ;
& c1 P. x# J. r} 4 V+ Z! y& I$ p
?> & K P; Q) ~! n: D, q
& g" I) o8 z3 M0 F- k7 Z2、for循环就单纯只有一种,没有变化,它的语法如下 ' W! T5 k7 j% r" `/ _0 {, z
7 N9 ? T, u, n. ?7 v; t/ [
for (a; b; c) { statement }
Q2 y9 [ ^! a7 l7 C( O& l& J其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
) D& h8 A2 T' ]+ [+ a) \8 Q下例是用 for 循环写的的例子。 7 y4 A+ O/ W0 s( b1 V
<?php
) ]* R$ o7 I# ~$ E) I3 nfor ( $i = 1 ; $i <= 10 ; $i++ ) {
9 ?9 b1 W0 r# u% T) x' c* techo "这是第".$i."次循环<br>" ; ! x; p! n" M1 n, z" {; l
} 3 \% Q; u' m" T$ Q6 ]% O# c
?> 4 L0 G6 ^$ I) l2 X% S3 a
. L, W7 w( Q6 X- R- _2 Y4 x* E
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。7 P8 o( S9 m: L3 [) _2 [; W
语法如下:
0 j3 J' @! h. pswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
& R3 E, @! F5 f5 h; f2 j) v# N$ Y其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
2 V0 D: T; g! W; r: X# |
. v% I9 m' i" ]. X4 [6 q% O! z<?php 8 f" ]1 c6 }5 l9 @
switch ( date ( "D" )) { ' k4 Y! `2 S/ \9 U* t
case "Mon" : " O0 S0 |5 Y" N+ e4 y& p, P: D6 ~
echo "今天星期一" ; 1 S, Y, h5 h6 s
break;
) Z4 }$ d. ^8 B0 U# w0 Ecase "Tue" : : X. j# u" U0 A" ~" @0 V
echo "今天星期二" ;
* k# Z0 j5 ~9 L# ibreak;
. w, D, [0 B, V: }9 n2 I0 @case "Wed" :
6 d0 f7 j5 j3 U( p, x5 y7 [7 Decho "今天星期三" ;
) I$ R' y! }7 A o x4 C/ mbreak; 8 U/ X7 ?- T q5 [8 S% I
case "Thu" :
h+ E# \5 T$ d' L8 u; cecho "今天星期四" ; 6 z( H9 R" n0 O1 c7 D k
break; ) ~+ H) D# m, L5 f* c P
case "Fri" : 9 n2 ?) B9 E- Q0 g( B
echo "今天星期五" ;
& _8 g, T3 s+ X& hbreak; / c7 a. j$ O1 r; N6 B
default: 2 n* C# i7 R. U9 A- y+ ?4 \
echo "今天放假" ;
: X* [+ q- \3 N3 t4 `3 abreak; 4 e8 [; q% {( i; T
} * m" \2 h' v2 T( M8 Q8 t2 a1 a" N
?>
, j! P6 ~# x8 \这里需要注意的是break;别遗漏了,default,省略是可以的。
# O" s; V+ d/ w- J/ j很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。# d. P$ ^. q- h/ e3 b
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |