php的流程控制
8 \& s! u" z# ]" V7 I' V2 B7 Q9 ^6 |4 ~0 P- p; w
1、if……else 循环有三种结构, Y g, W; d" Q7 t
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
( l$ q6 k- {. C6 P
1 ]- v4 j w, Kif (a) { statement }
) ]" P% m+ S3 Z7 Z8 @/ d; m: [; g/ {其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
; H- G( j% |# J" X0 L7 Q, c范例:本例省略大括号。 % G' j+ Y1 q- b! X, [5 @! o% b5 e
5 R# u% S. R) S; y# G' J<?php ' b* t$ w2 t7 I+ v3 O; J! n
if ($a==1) echo "我爱php" ; % F) E8 H5 |% Z( h
?>
3 o. @$ o1 }7 Q! b& J( S0 L; @' l
这里特别注意的是,判断是否相等是==而不是=。* A1 z" ?" b6 ?9 R& q
范例:本例的执行部分有三行,不可省略大括号。 7 f/ u5 j( b0 y) V
- W# W( {$ L4 E3 o3 ?' R<?php $ m9 Z2 C9 ~1 g8 A
if ($a==1) { # b! Y( ~$ Z/ W% d. g
echo "我爱php" ; % {3 {6 D4 D+ H$ p0 b
echo "<br>" ;
4 y& Y; w1 W) t" y% Y8 t" Y$ I}
2 V% x. V4 M+ }9 ]?>
+ Q6 _+ N/ e/ a4 O7 X4 I
1 V3 u8 x' x, U1 I1 g2 p第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
$ {. W4 n8 e' {* K# ~
+ q- _; G2 K; d/ n1 Iif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 * q# E- \. h, v4 z, @9 v9 j8 Q5 _; h
<?php
( H; A2 m5 ^6 L" f& ^7 Oif ($a==1) { , Q; A/ @- i2 |& e; S8 u2 U
echo "我爱php1"; $ G# |+ u7 o9 x% _+ {6 n
echo "<br>";, T! `& {) T/ O) L% a
}
: P4 |, y+ I' J: o& i# ~( T: R8 Oelse {; ]2 a" e* }; B/ P9 f: V: ^8 D
echo "我爱php2";
6 M1 \ l l; p1 Mecho "<br>"; 9 }( h6 M$ V. f4 ?9 \/ R
}
( ? @0 v( a/ G3 a3 i- ^?>
. ~7 o# _7 T6 I7 t$ h3 _
. g5 z0 o- p1 j# U1 ^5 ?第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
1 Z ]5 T$ Q0 n& A7 ^, T: [2 m3 l7 `直接看下面的例子
: [. Y4 }1 r* X0 Q) j2 z- k<?php
6 G2 V6 b; b( L' ]; ^8 N& T3 I$ Rif ( $a > $b ) {
9 y! q2 @6 {1 x7 S& Decho "a 比 b 大" ;
4 s2 E( k- A$ B( e5 q- I3 n; C. ]0 M} elseif ( $a == $b ) { ' r& C4 I* R7 M' H
echo "a 等于 b" ; 2 f' z; }" V- o' f6 b3 B6 w* b
} else {
E/ A) m% Y! h. Uecho "a 比 b 小" ;
- {1 `: y4 d# w, d. A}
$ _- C: E0 T! q2 ^0 H?> 7 @ ]2 U7 l" B. t; u( m# E l
8 Q- T1 M& Z0 Y) T( P& U2、for循环就单纯只有一种,没有变化,它的语法如下 : m. ]5 r& B. X3 E: l# `- \' }
4 x. F# M; r/ A4 B8 y Q c/ Rfor (a; b; c) { statement } 6 u4 ]" u8 U" J
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
$ F1 l/ E m3 F- P2 W下例是用 for 循环写的的例子。
- |3 A/ t8 @8 Q) M% ^5 @) _<?php ' |; {% i, _; U( M; s
for ( $i = 1 ; $i <= 10 ; $i++ ) {
6 A) ~7 o& r6 v/ _+ L2 l; Necho "这是第".$i."次循环<br>" ; $ u8 A- j* ^" m( k! Z
}
2 H0 P& b7 b! U2 W. j. y?> ) h0 j g1 J& K/ L! Y& B9 d
2 a( b8 d' Y: m, f& f5 O/ e$ J
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。: p% U! C. S ]" d9 N5 e! k
语法如下:
) s- N1 `. Z- a+ [6 N( C Q; P' rswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } 5 N1 g7 v) N/ |9 ?; A( F% r
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
! i7 d4 Y [+ i! @
E" U" q% O" L2 I+ Q<?php : S0 k" L! K" n% v( ^
switch ( date ( "D" )) { 3 t v! F8 [6 c# }- R
case "Mon" :
q8 X; n% y! becho "今天星期一" ;
* J: ], E5 ?- ybreak;
# A2 Q1 v/ j% @case "Tue" : + E; C! y$ v m, d% Y' x) `4 L
echo "今天星期二" ;
( h. i: }) B# r5 ybreak;
0 D; b4 }' B3 @1 Vcase "Wed" :
' q4 C2 x, ?7 [* H; a$ H: f+ Iecho "今天星期三" ; * ~: h6 D# {! U+ C* M
break;
7 S+ W( M1 i5 X% j. Ucase "Thu" :
. c2 B+ I8 l5 fecho "今天星期四" ; ) x9 k8 E- k4 h; v6 ^" u2 U2 Z% [
break;
! x& T7 J3 _7 ~% y) i# _case "Fri" : ) O+ w2 j- m/ {
echo "今天星期五" ; % i' a) O L! l+ U5 C9 M6 x3 O
break;
: K; w# m. Y d. M+ }9 K4 W7 N' Kdefault:
( W; a# N3 L/ ~0 f2 R( gecho "今天放假" ; % g: e: p, N5 V' I3 @
break;
, r& L0 C( H/ C9 I; E' {} . F3 S! ^6 @$ c( g
?> 2 \. h* Q! o* R) C" c* t
这里需要注意的是break;别遗漏了,default,省略是可以的。
1 c$ T9 L) E% L7 t8 Y" L* B很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
0 l2 X8 H/ S2 _! _) b8 {# `/ E十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |