php的流程控制 . |% h- k! o# ?( {4 c/ n! ?/ _
- l) F' b5 N4 o8 C' q1、if……else 循环有三种结构
. @; {% Q7 N* t9 @% A1 D8 k第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
+ l) T( |$ d( z. K2 T" D+ ^, ]$ L/ \ q$ \' U
if (a) { statement } - L) s7 h I1 T' Q. W
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。9 p) l9 g1 o! K2 @0 l
范例:本例省略大括号。 4 q& X5 H9 n0 _0 f5 n
" A: o0 A, d3 l( L! r/ F<?php
+ {+ _ `( p; R" X- v e0 u1 Nif ($a==1) echo "我爱php" ; ' [5 P8 O: e4 A. f9 ~" R" v
?> ; u3 i4 @/ `% T. J. G& E+ ~. \% n7 ^2 N
# u; `( P$ l/ ^4 H" `这里特别注意的是,判断是否相等是==而不是=。3 H4 Z0 b" w; J
范例:本例的执行部分有三行,不可省略大括号。
* m/ @6 Z7 I+ ^: R
3 T, y& i1 z! l+ j<?php # Z, o1 B8 m' q* h* b% i4 l, c3 P, |
if ($a==1) { 6 H; |1 C0 L! j; ~: J
echo "我爱php" ;
% ]( ~5 r* K. @0 techo "<br>" ; . [0 G8 a) u& B2 J/ x0 _0 k5 M
}
: c' f$ S$ V! A# t2 \7 \4 d; {?>
5 `) i( ~+ m; `/ c, g+ M; Q; g* n `1 L) S3 q
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: . k. M- u0 F1 W2 r6 s
5 ^! L# d# u5 [& qif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 ) ~8 b5 D8 V: B7 F; l6 P9 V; x
<?php 8 Z/ e5 T0 s8 I8 F8 e; W1 S% ^
if ($a==1) { ' t, n6 |2 U6 W. v, `/ ]; R! B
echo "我爱php1"; / W+ E& T- g4 D+ b& |7 X! ]
echo "<br>";
- G4 q( ]' O4 d) g, Y- }& l6 S}
! W9 n# ^8 _+ ]2 H) g. o4 K7 jelse {/ j7 Q* V$ B7 B b& u/ [
echo "我爱php2";' _' P# r3 ~) W( v
echo "<br>";
' G0 C) V1 o4 D4 Q- @' @} - L% r% b7 {- @9 }* V( p
?>
; }5 U" i7 ?/ o4 X1 r3 w" }+ U% j. G# q
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
9 ~5 }( q& k+ D8 V U直接看下面的例子
" I+ q) g/ d9 x2 L3 y1 N/ @! p<?php
' t% y1 S5 m$ tif ( $a > $b ) { 9 i# y& E% `0 N
echo "a 比 b 大" ;
- f. t0 f& x3 W* {# b" d# S/ _0 R2 d} elseif ( $a == $b ) { 2 z [1 r( e; u1 s9 Y
echo "a 等于 b" ; * K8 e8 K3 T! m- Z% H( O
} else { 2 y4 R* r1 l5 Y1 u: i8 s
echo "a 比 b 小" ;
- l8 q& H, h5 [+ N! d) m: F}
6 m8 L+ X. q) S& Q?>
# ?& S, I$ p0 h' w6 i# u& i4 g U: I! I3 Z1 y2 a
2、for循环就单纯只有一种,没有变化,它的语法如下 ! b% J' z# L3 U4 y
+ S5 ^+ q! k/ a: l
for (a; b; c) { statement } 5 F+ e* I# p" `$ H" V
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
7 c" z5 k0 J4 C下例是用 for 循环写的的例子。 # y( z. ?* ?% O8 u, g1 @
<?php 2 |( u0 N; q& K# j8 X# j9 B
for ( $i = 1 ; $i <= 10 ; $i++ ) { 8 Q# z4 D" M6 f, a7 ^/ {, V
echo "这是第".$i."次循环<br>" ; $ G$ J; M3 c1 ^# C, h
} 6 H& P) j* T, U5 \8 j( V( l
?>
; `; G! r n4 E
7 {3 A! ~. ~: @8 o3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。- P X! P+ X: ^, k) b
语法如下:
* n5 f" F- M; Y* D" O! lswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } 0 p, t# P1 ~- C; E* A0 Z. e
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 - ? T3 s3 T/ U( w2 R" P
' N( |! C1 c. T9 ^
<?php ! o2 C: I# |7 d" j; d
switch ( date ( "D" )) { ; m% I4 ?1 X/ }* b3 j3 x
case "Mon" :
* I9 C' S% \( U' Y5 j% a( Secho "今天星期一" ; 0 p" a9 L% Z* T( N: M, j
break;
7 I( p6 d, Z9 m5 c! N6 Vcase "Tue" :
: d3 P" G; v, Pecho "今天星期二" ;
% s/ ^* K& B% P4 R+ A7 V" F5 Q5 mbreak;
1 t+ d v: K& p$ {4 j. Y7 ?case "Wed" : 8 R5 @0 s8 o/ p+ v
echo "今天星期三" ;
2 o% e5 ], z$ v+ \% H( ]break;
+ D# H* {* Y5 t$ f% ncase "Thu" : 2 j( ~' a6 Y, t& {; N8 ?5 v+ G
echo "今天星期四" ;
" l( P- M8 G0 dbreak;
) p* E' t. |/ n0 d6 Fcase "Fri" : - M4 n5 ~" ^& l, n, A
echo "今天星期五" ;
2 Z6 A0 V* `" Cbreak; " P& G) w5 G6 H& G6 H+ u
default:
# V# l0 ~4 o; v0 pecho "今天放假" ;
7 n" g# y& [3 H W K8 Obreak; I2 G! P+ G6 T
} \5 B( P; I" H% z- r
?> ! M6 b6 j& x* C" L
这里需要注意的是break;别遗漏了,default,省略是可以的。0 q4 m' P7 g( A9 d, O
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。( M7 U1 T- I' C0 A2 M3 h
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |