php的流程控制
% z) F' w9 Z7 Z) |8 c
% H* k* v5 ]" q' H1、if……else 循环有三种结构
. r3 u0 `" b- Z1 X( c( `第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
l1 [4 l# v7 R( c+ x0 S4 a! @& \+ h" j: H' v& v/ c
if (a) { statement } , `: b$ b/ E/ H' A, M0 J4 x: ` S
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。4 b% y( \7 m+ s( x6 _+ _
范例:本例省略大括号。 $ |8 F2 X c+ W3 |
: ~ k7 X! c% m$ f+ i5 V
<?php
: a) Y7 X k8 b& A3 Hif ($a==1) echo "我爱php" ; 8 Y7 V" M! U& S. R1 ?7 K+ l f, n
?>
6 }: X) \* F/ e4 q& T# j
! a. P( Q* F. a0 q! d" x这里特别注意的是,判断是否相等是==而不是=。3 M4 P+ U q1 t5 M' f7 F
范例:本例的执行部分有三行,不可省略大括号。 " p5 j4 Z5 w( Z! q; M2 k& i) q) `' v
: f6 _: x+ j" O* `* ]6 g
<?php $ ]- Y$ h. s5 N \# e
if ($a==1) { * [; o9 m9 H$ D4 v' Y5 W$ B
echo "我爱php" ;
6 D% f0 ?9 u& a; Pecho "<br>" ;
* i2 w' y, B7 H& S) w% q: P}
) L/ ]& N) ~# R4 b |?>
5 h- K# c( u; P( A, N# J8 B+ [& ]3 G, ~9 ]
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: + m" O2 z. G0 D6 z5 ~9 A& Q
4 [' h( }; z7 D6 h$ ?
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 g( k0 S2 k7 e! }* w( Q
<?php 3 {: N: D3 c3 @# T4 h2 U6 q i
if ($a==1) {
- D* d, r( i( G5 |$ `( g5 Yecho "我爱php1";
: f& a8 O- s: E* b8 g& ^- uecho "<br>";
; i; ]; K G. l$ m: l} 8 M, k) {' V- k" f& A
else {( _% ?3 n. j. e8 ?9 n: G
echo "我爱php2";, {5 U a6 \5 ~0 q4 K9 a. A
echo "<br>";
6 x: | _* T: w! _; `) U! N! C/ S% c}
+ o% [9 `$ v% W% ]# g?>
& }4 b- \) v& P' S$ y, G! V4 l9 V
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。0 t$ z8 n1 p$ R
直接看下面的例子 ) \6 s2 o9 S" {
<?php ( Y1 [, K+ B4 Q3 P& Q& U
if ( $a > $b ) { % K8 H- B1 T3 B1 {4 F1 b* _& f) A
echo "a 比 b 大" ;
7 u- s" N5 v8 i! [# E# b8 L} elseif ( $a == $b ) {
- t# k6 @- ?5 f) J6 T9 E* Kecho "a 等于 b" ; 0 K0 F. X6 Y' ?5 P) P# B4 l
} else { + q6 F$ \5 B9 `8 R. P
echo "a 比 b 小" ;
8 R, I+ e; h- Z9 M: C} 6 L% S( ^3 J' j" f9 L2 z
?> ! s A5 W2 a0 b: C& Z$ ] x: K
& o5 `4 X- Z9 g4 d* ]% V$ E
2、for循环就单纯只有一种,没有变化,它的语法如下
: v0 u1 v$ v( Z' c2 U9 [+ A8 [& J/ r2 a/ m5 w3 ^2 P8 Z
for (a; b; c) { statement }
9 f" W1 w- c6 t其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
% j4 i, n# L" D1 e, }; d5 O下例是用 for 循环写的的例子。 3 Y) s6 Q/ g. S0 r7 L7 _
<?php 7 B4 Z( ~. X2 t, z6 k3 U
for ( $i = 1 ; $i <= 10 ; $i++ ) { + R/ V0 [0 W# S( Y8 v/ F
echo "这是第".$i."次循环<br>" ;
' p ]* h# [) x/ H' m} . z! j: R' L7 G% x( n
?> % e" q+ v- Z+ k3 g0 E- D
K5 E7 L3 z- w0 T* r
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
$ Y2 j% c& }/ m语法如下:
5 q" E! G# b2 E9 U' S' ]- iswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } ' }, P$ z+ Q3 l0 l
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ! E1 i9 V3 I/ `& ^$ h( }
8 A1 e' J) n: G8 D9 p4 d
<?php
4 u: L" @6 o- x0 Fswitch ( date ( "D" )) {
- T" O3 J) W8 ~' G! icase "Mon" :
7 h4 Q8 Q0 b& q5 Jecho "今天星期一" ;
8 R; v; L0 b, \$ O1 L n' `break; : z) _+ O% M6 f! ~! d
case "Tue" :
. K1 O$ {5 ^2 x; Vecho "今天星期二" ; T8 o0 C7 ?$ k8 U0 R7 U; U
break;
+ \. [+ a2 r u8 o) y& ]2 Lcase "Wed" :
$ s1 Z# B3 {' u5 @echo "今天星期三" ; n9 d* j+ y6 K. V% ]; p- L
break;
2 \' S: M; P& Z- V6 Q7 Xcase "Thu" : # E l) _4 X+ J, A/ h0 F
echo "今天星期四" ;
3 P7 Z* O) [" l( u$ n: I. U7 g7 ?break; / v2 d1 h0 p9 ^* y, G# a
case "Fri" : % {( e+ T9 P' e! G
echo "今天星期五" ;
# z9 Y/ Y! d2 b9 I2 R' _break; . S) H6 w# H+ a/ l5 P! I* a
default:
: D, j: S; i+ A1 |8 vecho "今天放假" ; 0 j* B! Q' n6 Q* A
break;
; G5 d5 g" }. N d. T- D}
6 H5 K. s4 s. e9 D& S?> 8 n. b) @4 Q$ |# j0 ?
这里需要注意的是break;别遗漏了,default,省略是可以的。
( n1 V; J* c* _1 f0 K3 z) e很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
" v& ?) [; b1 u1 B- C7 M* v0 u) ~8 G+ q十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |