Board logo

标题: 十天学会php之第二天 [打印本页]

作者: admin    时间: 2008-3-26 16:36     标题: 十天学会php之第二天

php的流程控制 ( l% D; f* `) b! j/ \+ Z

0 Y' l* x' I. \  L' I+ _1if……else 循环有三种结构
9 }5 e0 D4 ]. ~8 J7 d
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
9 u$ W* {5 _6 P
4 A. G4 u8 V2 q6 U1 k  D! B' Hif (a) { statement } 0 f, C! X  x+ {. ~
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}
# z" h- o, `  m: y0 {
范例:本例省略大括号。
" A% f* O$ H* I1 G

- b: r' t  M$ p1 F% r( U8 T<?php 9 v6 y- I8 R! K7 |# ^3 C
if ($a==1) echo "我爱
php" ;
0 X8 ?! k2 W% r9 r?>
8 Q) i" A8 s. ?0 b) `. W& [8 H1 |, W* n/ w6 r) N" w! W
这里特别注意的是,判断是否相等是==而不是=
7 c2 @, t0 n/ ?9 J
范例:本例的执行部分有三行,不可省略大括号。

3 U* U  E6 Z- B) g5 O. R
2 P( ~2 w9 ~; B* s<?php 2 R) @6 J, k) z) ~' Y! R
if ($a==1) {
1 m1 d& z4 j$ B, r3 z# Fecho "我爱
php" ;
) J& \/ k5 g! F, [% qecho "<br>" ;
* {* J* {7 H1 z4 G}
6 \! o" @4 p# c& u  E2 E?>
# `9 [! L: p5 D) l
% g* w) v+ d- }2 p' T7 c, G第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:

! e* g- a- }; \/ D. c& p5 ^4 j( Q5 M; @0 k% B4 y. \; \; [2 J
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。

5 t) \( Y- @4 |* ?) P! i5 J3 ~<?php 5 ^8 c% L. U& O+ q; T& ^+ P5 [
if ($a==1) { 5 k% y! Y" w2 K" v2 R. T
echo "我爱
php1"; $ o5 E$ t% K+ A/ [- y2 t
echo "<br>";7 v  E! I7 V' z4 J! I: U
}
$ b$ V3 l. }- m: e: H$ G" F8 jelse {
6 Y: E' g  \" a6 |" Gecho "我爱
php2";  Q/ R  G4 @5 _2 O
echo "<br>"; ' E% m# _5 ~2 i/ M3 n
}
" u$ e0 O9 G! ~8 E1 K+ [+ o; ]) I?>
# h2 @3 ]* R' {3 i' g+ ]$ F
0 \& S6 b; e5 `$ ^  N- r第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。

4 e+ s2 Q6 f( @# z直接看下面的例子

. A& V% y' y4 C# B! ?5 q<?php
- f- ^- ]6 N3 Tif ( $a > $b ) {
$ j! B' H; K. [. t+ F, Becho "a b
" ; ) G8 q- V+ _* O; g2 T! U
} elseif ( $a == $b ) {
0 s, z/ S$ R. i3 \) j+ r# Hecho "a 等于
b" ; : M1 Z* p/ U! W2 z' S( b8 P3 T
} else {
& q, B7 b0 N& b$ |% hecho "a b
" ;
3 I3 h9 z+ c2 X+ j. A- r}
; {/ Y. h8 w. C0 T: C?> # V) e% m$ V+ l+ q2 E

$ K+ y# E0 q: o' H5 |; i" W: A+ M2for循环就单纯只有一种,没有变化,它的语法如下

! e+ u& x1 J: v4 }, K3 w) r, v9 K
4 [% x4 ~. \( V* @) E- U8 Ffor (a; b; c) { statement }
: P2 ~) \, \. t其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}

* W2 {1 [9 T) Q6 V下例是用 for 循环写的的例子。
- A; W+ w) M5 ~; L; t) ?! K
<?php
% Q, c  z/ m! a2 ^! efor ( $i = 1 ; $i <= 10 ; $i++ ) { ( U$ c8 ^2 Z! P* e
echo "这是第".$i."次循环
<br>" ;
6 P7 s( ^7 B7 g4 T& V+ _" Q4 J8 Z} & Q+ |" `; |' A- w2 r0 G
?>
2 w8 S2 `. e) n. P2 ]6 a
) m4 K  |4 O0 R% C2 J; y& K  R3switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
; ~3 Q) @( ^. [+ n' B) P
语法如下:0 v9 P5 |* R& U5 a
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } 7 k* R6 R: {! K2 Y$ z8 q
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
1 q5 _; {. T# F8 _
+ n4 @0 q$ u" Q5 S5 g0 V1 m<?php   J. r0 Q: v- D) V  u
switch ( date ( "D" )) { , y% f* d& ]' P; E3 z5 d
case "Mon" :
* M& r1 R7 H  H6 W& J! J/ ]" kecho "今天星期一
" ;
5 A$ E. Y0 ^7 u( n  V2 `- @6 ebreak;
$ k7 N1 f- |+ h2 @5 zcase "Tue" :
, f- u# X; A# y% }, h& a( {echo "今天星期二
" ; + g) o2 H$ P0 ?+ b9 E; t. ]
break;
1 F8 L# f% U. B4 G2 {case "Wed" : % S1 I& z4 }2 v6 J
echo "今天星期三
" ; 9 ?1 }3 e* S! b3 ?. S2 ^0 l8 J
break; ' X, J- N4 I+ p  c
case "Thu" :   k  q) F! ?8 s+ J: p, ]
echo "今天星期四
" ;
/ o0 P, s3 K7 l7 M0 n: a8 qbreak; $ I  I& p6 e2 S' t: t2 n
case "Fri" : 0 ]9 k! a: A4 D' P
echo "今天星期五
" ; 8 C4 ]8 S4 v7 ]5 b
break;
: T: f& t* P  g; G! h0 c4 y; ddefault:
# Y  e+ R" Z1 u$ Z! zecho "今天放假
" ;
2 ]/ @0 O% u) l" Q+ f& ^break; " C6 f4 ^* K7 M3 k6 B' h
}
4 H% f  R9 d/ j8 ^: z?>
5 W4 o; R0 H' {" k; q6 b这里需要注意的是break;别遗漏了,default,省略是可以的。

' O$ q; j) T7 D& a; v$ E/ a很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。

. n% K- M/ ~3 l3 g7 n$ ]十天学会php之第二天就说到这里,第三天开始说数据库的使用。






欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2