php的流程控制
3 u" z! N* w7 G& W) \3 G, n) |
; e a% S5 O) Q2 O1、if……else 循环有三种结构, r* c; h" O- @' [7 I6 X
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
+ O1 U1 J; Q/ Z5 P. [/ m( f9 u# s6 v, v7 h3 A6 c5 O9 h$ w; h! u
if (a) { statement } # B {2 \$ L: y
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
/ u2 ^( U1 r% @) L7 F, |7 U( S范例:本例省略大括号。 . ~$ z2 H Z/ c% E5 `, y" R
6 L2 R- D$ \% W
<?php
" o9 u6 H$ k. w, N, B7 d; H6 Zif ($a==1) echo "我爱php" ; % D8 N" O8 ~& t
?>
# @0 n# @! B# P% }0 D: H
" X& X1 p- s& {# q4 m9 [8 t: @这里特别注意的是,判断是否相等是==而不是=。 @! Y2 W% w3 S! ^
范例:本例的执行部分有三行,不可省略大括号。
$ l: ~4 Y6 R7 ^% ^ c
0 b/ B6 }8 t2 m" e<?php ( [) B) F* A% P6 q
if ($a==1) {
' V3 i1 d1 y; X+ L& ^ yecho "我爱php" ; 7 R7 q) N3 m$ S5 H
echo "<br>" ; ; n9 m2 b; Z* S8 O* D! p& I$ O
}
. O3 w7 M: V* g?>
3 b4 u @% k' E# i" O: ]8 @5 U# I: Z P3 Q1 r6 J5 b9 Q3 _4 _
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
2 |) ~' X# O: x5 G2 I, L/ }8 A5 `: ]- t2 H y
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
$ Z/ q9 @' J# H/ B4 S; n<?php + U) a# X' z1 O% w6 A( M
if ($a==1) {
1 i: m- ]4 T& N$ V3 r5 Secho "我爱php1"; ! E! a! _ E$ { X
echo "<br>";) f2 U' `' i! p" Y8 D: a9 e# n
} - X, K+ a7 q, t8 |" {
else {: i3 K( @8 k. t3 H
echo "我爱php2";
8 A- W C# l: |" pecho "<br>";
/ ^. }$ F8 B- g& [} V( F m {% K H1 h, f8 S" Z
?>
% J% L1 N. Q" R0 e, O/ {: m# m% K. B, h8 x% I. n
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
4 d5 l- E1 n" P# g直接看下面的例子
* g: D/ ] ^. n& Q6 J' o/ z2 Y<?php 2 ^2 v& P9 u- i2 J3 U ^% a4 p' x
if ( $a > $b ) { 2 @' g, o/ Q. B; P
echo "a 比 b 大" ; ( v e& B5 v" b0 ~
} elseif ( $a == $b ) { " |" _4 c& m7 i: \8 T8 E
echo "a 等于 b" ; 7 P7 B' V$ d2 l }* d1 r
} else {
/ G% p" E% k5 y6 m' oecho "a 比 b 小" ; ( \( P V" U( C/ e$ [! k% ~: p
}
8 s8 ^7 [( P% J7 w$ [5 q6 J?>
8 i1 C: \ r6 c" ^# O& S0 T
2 O2 ^/ V: e! D5 g# A2、for循环就单纯只有一种,没有变化,它的语法如下 " j7 |. f! k* U2 U2 T
. ^& S+ c( O' i" T: ~- v1 m# Afor (a; b; c) { statement }
( R l! L( f: |8 [7 F其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
: x$ F6 o6 E& }5 b/ L t+ \2 T下例是用 for 循环写的的例子。
5 j7 Q! \, i( L3 E) x' l9 v' Z* f. l<?php 4 D! [! y7 I p
for ( $i = 1 ; $i <= 10 ; $i++ ) { _+ H4 |5 F& Z) B" W4 |4 U( o
echo "这是第".$i."次循环<br>" ; 4 u2 C9 x d. \5 s" G2 r: I% b8 C
} - T& G) H( `9 b! }9 @
?> 2 m) r" r9 M. [/ g$ B
3 H% K) K5 l" V2 {3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
L, F* h% R+ R6 x* z/ H Y8 G语法如下:
( X1 w1 k, \ O, B+ e3 R2 Jswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
7 e% M7 O( G- i. x% W* P; x H其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ) a( n3 k3 ]& `" ?! p( `
: c) f$ K( w: W0 I$ |3 n* n. c8 C<?php ( z; ^- t5 l; D# ^4 d( O+ I
switch ( date ( "D" )) {
6 T- m$ l. H4 Y% z* M9 P6 jcase "Mon" :
4 F# ?, N- n# v& J1 {5 b; Yecho "今天星期一" ; # ?7 A: T: D- q
break;
' X7 ]9 |, l1 ]/ }! ycase "Tue" :
( Q. Q! G$ q" yecho "今天星期二" ; 3 i, n3 _/ }' v7 ]: k
break;
9 K8 w% b6 b0 Q S6 a" T' x8 |' m! @case "Wed" :
2 } v9 s/ }. q3 o; I3 ]echo "今天星期三" ; , P( n+ C# O5 S) [& u
break;
1 o3 V5 X" q3 b" k- L6 `. p) ccase "Thu" : 5 t) \" d5 n$ H* M7 f
echo "今天星期四" ;
h: ~' Q! E9 Vbreak; / r- w( w) ]" B3 x+ |- ?, N0 }
case "Fri" :
# a4 }' r! x( @3 f. eecho "今天星期五" ; ! m( i0 r' D, A' H8 m; U. X
break;
5 \- o8 n. i+ l8 c! t1 x$ Jdefault:
0 Y7 z9 j0 z$ m2 R# a* Z2 B* Eecho "今天放假" ; $ U# E9 O# z& Q- [- w7 C
break; : L" h$ _3 u7 x# J2 ?6 p6 I1 c" l) X
}
8 a/ d" m: R- w' S; T, q6 F?>
+ L% E$ P' h1 [" I( q" T这里需要注意的是break;别遗漏了,default,省略是可以的。
6 Z* Z" g ]% c- N' X很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。. R4 p7 t5 t9 f: W
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |