php的流程控制
4 S6 _2 q" R& Y& ~; N
2 V& |( L: ?# E/ Z& q1、if……else 循环有三种结构
: A0 V+ ^, v+ {% j1 T第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
8 `: {2 u+ v, L t( s2 p6 q8 _, U: ]; K4 l
1 w7 J* z5 l, X Wif (a) { statement }
2 A2 z- B# V% w其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
B, [4 _2 D+ c$ W3 C范例:本例省略大括号。
3 U1 x' N1 h! d8 N( ]* h% |+ ]- j) b
: D) x& l. V# B' x<?php $ _ `* q5 J; U! `
if ($a==1) echo "我爱php" ;
- p: X' i- j$ O0 N$ H2 q7 E6 l?>
! c1 F+ h4 U/ G& a' c; [- c" Z. g7 [4 m: J1 ?& C: G- R- o4 x
这里特别注意的是,判断是否相等是==而不是=。
; c6 I1 H# E0 y2 g& t范例:本例的执行部分有三行,不可省略大括号。
0 m' M i* c8 S P
4 h( a/ ]$ s: L+ D# F1 O9 b, ]<?php
$ J- O. D; i3 Q! n) A% S/ [if ($a==1) { ( m) M+ Y( }1 y5 v
echo "我爱php" ; 8 k6 x& g3 B- u1 p$ c1 V
echo "<br>" ; - r! Q' S+ Z: S* ?3 J
}
% t! i+ S! _' z. i! |. Q?>
/ v- D" Z' I/ p7 H# x* e% ^
/ a: j7 j* C3 m3 h, b0 k* k7 g第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: 6 ^# O+ |/ @$ N$ R& o* k
- i" i; U* g ~if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
' c w1 b5 i! e5 Z<?php
. b6 o) l7 \. a6 ~1 aif ($a==1) {
0 Q- Y+ V; i9 } A6 m9 q. S. Y& zecho "我爱php1";
0 a2 |" E3 X: v q& {3 Cecho "<br>";4 N+ x& f6 ]: S
}
9 Z' A) Q# [; O; Y0 ], yelse {
2 c0 n7 _0 f m& S- u" Techo "我爱php2";
5 S( @; Q) N% m. b7 i6 ~' Techo "<br>"; & p. Z% w* I' F6 g' B
}
) s4 P& i0 D" }: u' i' G?> $ V7 t' x t1 `) V4 {
+ a6 P! ~% Q8 h8 {8 u! N
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
5 p, P. |: n5 b6 t) c6 @直接看下面的例子
+ s4 Q' S% `8 i0 z" R6 j/ v% s3 K<?php
0 l# |( U5 E8 Qif ( $a > $b ) {
W) L& ^! t( O3 Hecho "a 比 b 大" ;
- B- A) f. v2 Q9 o( d" |: w} elseif ( $a == $b ) { ( Y! E; P. L* A$ X
echo "a 等于 b" ;
X- m3 a. @: U7 M( W. k5 u} else {
" F, x9 ~$ p( s+ M7 Y4 T: eecho "a 比 b 小" ; 6 V; i. T$ K) o& T
}
; J, z8 W- E& ~?> : d6 Y! F. ^- L
' E1 B$ i% p( a( ]0 Z u
2、for循环就单纯只有一种,没有变化,它的语法如下
4 E& q# K) D6 K2 |" o/ Y: S( T5 i. B! e' d* c
for (a; b; c) { statement } / |4 H& M1 X/ O9 \: U
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。: x/ T3 f( [1 X" _- r. p' `8 V
下例是用 for 循环写的的例子。 . J6 {3 Z, } k' e0 ?
<?php
- _( r: {# Z6 C$ }7 @! {for ( $i = 1 ; $i <= 10 ; $i++ ) {
; _4 M( ^* s- u* H. B9 Recho "这是第".$i."次循环<br>" ; ! r- h, _3 g I: F+ U$ Q5 a
}
+ \4 r& U+ w4 }/ w?> P8 T) w5 A v: L
; Y! a+ h w6 e3 p* Z/ w5 X9 K
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。: w% |, n& c6 j8 Q* @' L" L! `+ z3 a
语法如下:
3 O& w [/ a8 b& B& j( Gswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
' Y0 P& o7 X) p5 D* p) Z! Y, F: \8 e其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ; X, ~$ T- B4 A- x
$ g9 d- L+ A: J<?php
0 d7 _. I6 g! Z J7 iswitch ( date ( "D" )) {
% t" o: j% l' w% n' Zcase "Mon" : " U1 f- `/ O5 g# z3 ]6 `; `
echo "今天星期一" ;
' F- ?: h' J& c/ Nbreak;
+ d o6 ]. ?8 D! M& f& p1 Hcase "Tue" :
5 @0 L( _, E+ L2 Y5 F4 X, necho "今天星期二" ;
8 v7 i* B7 K6 {- z: T* p( Ybreak; & G# k% o [7 O) W+ u# F( K8 Y
case "Wed" :
0 p: s8 T7 a ?1 W$ Xecho "今天星期三" ; # o: k8 A& v9 V8 s B
break;
7 ^" P7 T# M" D0 F+ W; _; Vcase "Thu" : / x# h# k7 t% C' q
echo "今天星期四" ;
# k Z9 l5 ]* c+ t, |! Ybreak;
2 ~6 [# D5 b2 H! D' A6 m! m5 \case "Fri" : 5 i' H8 h$ }) S3 n C
echo "今天星期五" ;
6 B5 P4 s# m$ ?0 _break;
1 z! @( z7 I- ^" S2 s- |, ndefault:
0 O* h" ~# |/ B" e5 X: `+ Hecho "今天放假" ;
5 H& j$ X' G; Y6 ?& Ubreak;
/ L5 I; ^( x& M% p* V1 z! M/ _ ^. H- u} ' d, f( {; L& {2 I$ Q8 I5 \
?>
0 A! o V" J4 U, P, t这里需要注意的是break;别遗漏了,default,省略是可以的。7 d6 D/ l( _/ Q; L
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
: e, U \ n# I/ A; e, U十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |