php的流程控制
' }. h7 z9 U- n* F& A' d
$ t- G- B8 P! ]+ J3 S1、if……else 循环有三种结构
6 q; a" R! k, k* g) [第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: ; {1 Q5 g1 F# O( W% n- A4 N- q/ m
& r+ t, m1 k$ X3 O8 f, \
if (a) { statement }
3 l9 G! B( d9 `" P+ g- a0 r其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。3 u3 {. k1 P4 `6 F
范例:本例省略大括号。 ~6 O" P6 z" G) Y1 A$ c7 M
$ g+ D8 F, ?+ w5 Q! x/ Z
<?php 1 Q6 Z% ?2 a* @8 T, Q* H. c
if ($a==1) echo "我爱php" ;
% T$ ^( t) b) i3 U?> / A" G9 G( y7 o. Z
8 l4 Q/ N& [ G, x# B6 U# H4 t这里特别注意的是,判断是否相等是==而不是=。
- d3 r2 N: M9 _' N5 N范例:本例的执行部分有三行,不可省略大括号。
/ f5 A6 H" E* T; V( _ p. X/ q- {: c/ {4 [
<?php : d5 s$ F! L7 b
if ($a==1) { 6 l% I. A4 Q) g) q+ g
echo "我爱php" ; / L, m) j A! M
echo "<br>" ;
7 X, F- g% G l: A/ ~! U! C& O} ( o$ i" L8 ^% W% q0 [' t8 e; `, K
?>
% |( r U# [1 [- x" }! y
$ l; ^& T% }/ S; V5 P( z1 ~, ~. b第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
/ m" ^" W9 O! T7 B. P8 t0 E! p: c B; s' d! B( t
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
5 @* `1 m1 t6 o W<?php
$ ~0 b5 p/ n' n: C" R) o$ {( gif ($a==1) {
, S, T/ B% A' b! Q; G4 F; a4 aecho "我爱php1"; ; I9 X3 U5 m5 |, M1 s: u9 y
echo "<br>";6 k5 q( A3 C# P# i1 h0 ~
} . }% g9 i" r5 h- {+ q
else {/ p& i. l8 l/ C- y3 y9 f
echo "我爱php2";1 Y* \, n& p' ?) B( V
echo "<br>";
$ }5 y5 L- i, q% l9 G* x} + S- r: q: { d m ~" z, A
?>
" P& J9 @% I) ~' Q1 d2 g* X2 B2 `
9 B9 L5 q4 S3 @第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。* f* [, Y, k" g/ F6 y" `" L
直接看下面的例子
* d( {- _ C3 s& Y1 |1 f<?php ; z p [, ~) i' R( |3 B; c' z, b
if ( $a > $b ) {
, `; D( a4 k8 ~9 b- Z9 wecho "a 比 b 大" ;
% H8 L2 I" L* @1 B! i$ F+ R9 H6 b) m} elseif ( $a == $b ) { ( M/ a9 X+ M+ V Z( a- E
echo "a 等于 b" ;
& [$ g) K. K1 o B2 _9 ^2 V; N& @} else {
! C$ e( }% X1 E5 y6 b9 b, _echo "a 比 b 小" ;
J) y8 m9 R. I* D} / Y& ^" H* k% C/ D
?>
$ l8 x% p2 V6 X5 V' S4 K
, J ?* B/ s i2、for循环就单纯只有一种,没有变化,它的语法如下
0 B L( A- X6 c3 ]7 D
6 @* Z- i# f! T. qfor (a; b; c) { statement } . @0 |7 u5 h( U) P3 R. @) W/ t( Y
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
# H1 Z) ^. E, M7 a7 Q下例是用 for 循环写的的例子。
. \2 P' m! Z* u0 j2 a. S: x<?php
1 e0 H* P- G3 nfor ( $i = 1 ; $i <= 10 ; $i++ ) {
. d. r( A$ J* Y( V4 p0 v! `0 \$ aecho "这是第".$i."次循环<br>" ; 7 y5 G, J( E3 c n! K# D
} . B+ B- [0 c7 m2 v
?>
9 H: K N% }' D3 \& C% t4 {4 P7 C; I# |& y5 C/ G$ [3 T6 Y
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
9 @ o( v8 n7 {( p7 L语法如下:- T" E- ~' N$ u# A
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } ! ]1 e7 W9 ^1 Y6 Y
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 9 g* K% R3 e/ ^& ?; O
5 w c, ~ K7 K' {) Y9 k: M; E" Z<?php ) L) b9 D5 X" O0 }: F5 b) c& Z3 U
switch ( date ( "D" )) { : L) s( C2 H: Q5 {7 m6 s( J
case "Mon" : + K1 l l3 W* v: {" d
echo "今天星期一" ;
9 f$ J) M1 t$ G9 ubreak; 1 y; Q1 R: m+ O8 r2 s$ M7 Q# H
case "Tue" : / ?/ v' G' O1 I
echo "今天星期二" ;
' r/ V1 w% Q9 o8 f& ~ Hbreak;
& _5 V) [0 O @2 w! ^7 \2 Mcase "Wed" : 7 b a! W: p/ q1 X% e
echo "今天星期三" ; 8 c3 F) h+ `, m- Q1 v" x4 O) C
break;
! [" w6 ]+ P9 s- ~. Acase "Thu" :
. o1 R7 l" ?7 Q5 ^$ Necho "今天星期四" ; " ]. L( D& w* x6 ?+ j7 G# G* |9 y
break; , ]6 |; [9 R2 S% t) s) i& }
case "Fri" :
2 o' R5 V5 ?) n; b0 R) vecho "今天星期五" ; % N! M% M4 c* H+ A
break;
1 Q+ |4 P1 c) O: |" i7 B% hdefault: " `7 s7 s7 m) p; ?9 K/ A
echo "今天放假" ;
2 c: j! _/ {6 {6 S. J8 Xbreak;
; }" Q, H# i5 e( f7 I2 D6 K) t} : F5 h& K1 k; E+ u* J, J
?>
/ j! O8 J) A. i& ~& U9 p$ |- E0 e这里需要注意的是break;别遗漏了,default,省略是可以的。
% ~/ j8 d9 _% ]) J很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。: V6 d! Y/ C! y' r7 O
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |