php的流程控制 ( ]- n1 b1 V+ c. T1 ?0 Y
4 S* ]# c( J5 z
1、if……else 循环有三种结构; `5 C: f! O6 G: y* y
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: 5 m2 j* ]8 z4 z0 ?* R
3 s+ A' y$ C; E& Sif (a) { statement } 3 |! u. O8 o# N# M8 i# a' U
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。. a5 E$ H5 Q9 J. R. G
范例:本例省略大括号。 N! Y; U w. w6 v& ~4 X
1 x0 n" ]1 q- {+ V$ C" x
<?php , C& v8 }% ]' Q. x
if ($a==1) echo "我爱php" ;
3 X6 z# n3 O6 H$ R2 m?> . F' x( N0 f( V; C+ U1 d7 k5 j* z
7 o! e4 L; d# e& e这里特别注意的是,判断是否相等是==而不是=。
3 r# m* }3 d: J6 Y% @, y. ?范例:本例的执行部分有三行,不可省略大括号。
6 m& x$ A) o* k) I! a( e. h) O/ J! g# P( z
<?php 7 ~: ]4 ?6 a6 M- J
if ($a==1) {
- w" A7 m8 a0 W5 y5 e0 Z* N5 b6 A0 {+ lecho "我爱php" ;
- u) ~3 Z g1 o7 Iecho "<br>" ;
( }) F' G. `1 A9 n9 W# P}
1 c9 N" I; p8 x. Q* H% A?>
H- q1 ~! J* K& y _% N3 Z
! A5 d; m @; I$ ]第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: ' o# R4 v/ k8 C9 m. u
0 w% }4 u" U0 h" H/ v) }+ U- ^if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
( a) o( q) L/ g% c" L5 z<?php " U. H( q9 b& h" J; F9 Y& K& Z
if ($a==1) { 0 o+ O. l! P7 o
echo "我爱php1";
8 P; i8 _* k8 L8 @% a8 W }echo "<br>";- ^+ {( U. c& B) f6 t
}
7 R+ ]/ [8 s: R/ ?) h7 x9 D8 ^else {' r( q }, Q/ G( L. l
echo "我爱php2";0 M. C ~' C- a- o
echo "<br>"; 1 ?9 ~# u' i1 O
}
6 f' }/ R/ i8 p7 }, f?> 2 A6 h0 i9 e8 Y
1 X# n o/ m! [" @, ^5 U+ g第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。" ?0 f' Q& J2 ~% }- {
直接看下面的例子
. I0 P: o0 S8 m. Z( N* S) N<?php 5 R" O. }" S( f% r
if ( $a > $b ) {
- U t1 N$ m6 K& i8 w% ^echo "a 比 b 大" ;
7 [. \/ {0 r+ B8 y} elseif ( $a == $b ) {
+ k* a" |+ S) \" h2 d: jecho "a 等于 b" ; , K9 P/ d' L! }: H9 T% i! {. [5 X
} else { 3 K8 c& m, c! v
echo "a 比 b 小" ; ' Z ]& Q/ v& X
}
- j& H' C# M, B- D?>
- B0 {* B) m b- c5 o& n* e
) j/ q4 m5 ?7 M! g! u2、for循环就单纯只有一种,没有变化,它的语法如下 * a, `3 m! J: t% A, [' u
- R4 f* z- H6 W+ o3 Z$ h/ c7 k& pfor (a; b; c) { statement }
. t/ v. `4 v2 N' Z5 Q8 h其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
+ l7 I7 H4 {6 X5 L$ R3 _6 x4 C下例是用 for 循环写的的例子。
; _& j0 j+ Q! P9 O( Y" ?<?php
1 G: d+ r) \! z# jfor ( $i = 1 ; $i <= 10 ; $i++ ) {
4 O! k/ e3 Y% v- z) f/ `echo "这是第".$i."次循环<br>" ; - z. s6 h U; Q2 u5 K' ~* I
} ( I% T3 A* V \
?>
* |6 m5 {+ i( ~# w, ~8 _/ @, |* b- b- _! B. c) n: f8 ~! I
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
1 p5 G0 h1 {. w& G9 z语法如下:6 F4 E5 B Y1 R0 ~+ A
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
8 H5 R$ D; N: {, J' Z) Q+ z其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
6 v' Z4 H0 g- _) n4 }* [0 R
5 h# T2 N) H4 a<?php
0 y3 a) o' N2 q. s2 Zswitch ( date ( "D" )) { + m6 ~% [! T! O1 N2 \6 b
case "Mon" : / f# ^5 C; s( g3 }* l1 j
echo "今天星期一" ;
/ k9 C" @' b& p$ D& M" pbreak;
( g% _. l; Q3 J, F, o- n. d1 vcase "Tue" :
5 V$ p/ e0 B: i/ ~0 E" W. U1 decho "今天星期二" ;
" i- L! p9 X) d. S9 N4 O. ]& n6 obreak;
$ \ A& F! [& ocase "Wed" :
) I3 f; r A% U$ lecho "今天星期三" ; . a0 s D* U' d0 S& Q
break; % o9 N. q: n. a d0 a
case "Thu" :
' W2 X/ W- w$ \echo "今天星期四" ;
/ b$ A8 e7 P; _6 ubreak;
: |1 ?$ `7 @! d8 ~2 _6 lcase "Fri" :
% z) T6 S9 j( W Secho "今天星期五" ; 2 h, M `: I- N: ?" \: C, v- |
break; 7 e y3 h0 A: J$ w
default: % a# E/ P, G4 i8 N3 g) d
echo "今天放假" ;
8 e3 _+ _! ~. q' l& }9 Dbreak; 3 d4 E8 Q1 `2 M2 {
} & h5 S$ Z6 u$ F: g
?>
% W5 d$ m- e* r$ f这里需要注意的是break;别遗漏了,default,省略是可以的。+ N! w0 V' [6 U2 r* p+ O
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
! z! q; |' ~/ ?+ q6 E, ^十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |