php的流程控制 1 C: k0 V& d. C/ v! B; v: I' T
0 b" D. c3 j/ u' X" v8 H3 c7 L
1、if……else 循环有三种结构( r9 e* C5 h4 ]" V6 {4 u4 y
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
4 G c5 r; d$ ?* C' z1 {" H! Y6 T1 F; L0 h. `8 h, \
if (a) { statement }
- }/ ~. B/ \: `* @1 r( J其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。8 t! P" p7 U8 B
范例:本例省略大括号。 : K1 U3 }. e. v$ h9 m
" Y/ B5 u4 a6 ]
<?php
0 F# Q- S' E$ I6 {2 v Zif ($a==1) echo "我爱php" ; ' l5 k# x9 k1 K1 A+ w6 w
?>
% g- d3 c$ S* R7 c) i/ b
$ \4 U. H: N) m这里特别注意的是,判断是否相等是==而不是=。/ ^% H% w+ t+ ?" t7 c& `9 Q
范例:本例的执行部分有三行,不可省略大括号。
2 Z2 G* ]. d$ c5 u$ s8 h* G) x9 X5 B9 G* |) E: C$ D/ F$ B$ m. }
<?php
& h2 ?0 p9 s" \( w/ q. uif ($a==1) { + L1 {( {7 ~& _! A
echo "我爱php" ;
4 A* B- c. f9 l) t4 |2 c: I4 Becho "<br>" ;
. o' X* N* e | ]- A}
1 s8 p, X' |6 n! i& P( T: ?* c?> $ B! T# n( \* ?* S9 G2 l2 X0 l: \
) Y. g$ R; X4 V' e$ h2 H
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: " X; |9 ^' [ G# D6 u5 w
. [. {8 y4 S! U( `8 P# v2 k+ R& S7 B
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
& E/ r& ^; V( u* t) U<?php 2 O/ A6 y: }, g
if ($a==1) { 3 X% J3 B8 {, \- z9 z
echo "我爱php1"; " ]2 N4 z/ L# H* b) L5 ]2 g
echo "<br>";
6 r2 n8 z# G+ }5 I) G# b: h}
- T6 D) X7 ^ `2 N* Telse {
- g6 l; ^8 M, _- S/ d1 uecho "我爱php2";8 _1 M- ]: }6 \9 I* t1 `
echo "<br>";
% z+ Q" l9 B) | E$ F. `; V9 S} 4 t5 G+ p/ G0 c# H P: e9 [
?>
. k5 y5 f# x5 R$ i! P% ]1 k
! o7 Z: N+ H) M5 x* _+ f9 d" B# T第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。 H3 C6 I3 W( H0 a* C' w. }2 H
直接看下面的例子
- Y @6 T; ~4 M<?php
# R, h2 x: h; I3 i' Y. h) @ Nif ( $a > $b ) { [6 e: h! ^/ H$ S
echo "a 比 b 大" ;
$ D; l# g# L: o; C; J& X8 p} elseif ( $a == $b ) { 4 N# N0 c, ^& N/ z& c3 d/ y7 p
echo "a 等于 b" ;
4 B$ f: U/ g, c} else {
' k3 X4 w; |: }8 @0 h* [echo "a 比 b 小" ; . C2 E& o$ q6 j* N
} 4 N, j5 e& ]0 M% x# F: N0 @7 y2 {
?>
6 [! M, r) T6 Q( p" \; K+ V7 l1 C! a5 }! C/ _$ { M3 p
2、for循环就单纯只有一种,没有变化,它的语法如下
S0 h9 J9 i' p( _. K7 l; Y9 S: Y5 W8 a$ f2 _- b' D
for (a; b; c) { statement } - [% u# J$ M( [7 ^
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。6 W2 U; |1 ^7 N; c1 `+ A' W
下例是用 for 循环写的的例子。 ( B1 X9 b5 Z. U- p: e o
<?php
( [3 V& B( j" r3 ] U3 `for ( $i = 1 ; $i <= 10 ; $i++ ) { + t8 I0 s9 e7 h( R0 a0 z( P6 f4 X
echo "这是第".$i."次循环<br>" ; , P( S% j4 a0 A4 i4 c4 T6 C; O; V: E
} 5 \$ R4 N9 J1 ~- q. f; W
?> % B- ~: W7 C6 P- |! T i+ t
; N- |1 G H' {/ C! ?! `6 K3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
1 C! I: J: @. S% i( K# g1 A语法如下:
, Q- H# _5 Z* ?- cswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
o: ^( r: ^$ [2 Q% z" L其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
2 C3 W1 H3 A/ h3 L; ]" S4 u; e! {/ p/ j2 r
<?php
: [7 Z( U% }9 ^+ V7 uswitch ( date ( "D" )) {
* r& d* S7 S& o( ~9 z$ _case "Mon" :
# Y" _& v+ E1 T" fecho "今天星期一" ; R0 E" ?1 f+ b; s
break;
) U9 g& I* Q% A8 S7 ucase "Tue" : 4 m5 c }1 ?+ K' \9 F! Y9 M2 j
echo "今天星期二" ;
0 [; m5 N# x* f1 v6 j; Z; r/ S! Sbreak; 6 O* Y. E) I% u
case "Wed" :
9 h* C8 E6 m0 y7 E/ ?$ gecho "今天星期三" ;
^/ c9 b1 y6 N0 w( qbreak; & H/ P$ L* R6 A2 a* O; K2 L
case "Thu" : 1 }2 ^* V) I5 G5 J0 f
echo "今天星期四" ;
1 ]- S6 h7 P! k' k5 y5 n+ w/ w; c: pbreak;
& F# m. _8 ~; \case "Fri" :
# @2 h6 J2 i! [/ J; D8 w- [! \echo "今天星期五" ; * m) m3 I4 |) O- U" w+ g
break;
3 f- A. |5 P% b0 F( z' U/ F, o6 ldefault:
+ u2 Z2 s X8 ?4 c3 T( eecho "今天放假" ; 4 p7 t5 u* @$ B8 n8 G. H
break;
W! `8 D) c5 `! e; Z- `}
, j5 J( p6 u# w1 I X?>
1 P) T% ?+ Z: R. R# Z }这里需要注意的是break;别遗漏了,default,省略是可以的。
+ J5 E6 I2 Y9 h' g很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
! }) X# K. @4 _. e十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |