php的流程控制
! T, C5 A4 e8 l. b6 ^5 ~, W* o( R, t5 z) Y
1、if……else 循环有三种结构
7 |1 `5 J w4 w5 n7 ]6 u第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: p Y. \# _! q+ C7 H0 t: l5 N
. q8 E, o, i9 s7 wif (a) { statement }
& P- N( E- |/ j% N其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
1 b, R5 |* J8 n, w* b8 Y- ~4 W范例:本例省略大括号。
9 O$ c9 ^3 I$ b k% x4 q" Y% J6 |
$ B' U& H" ~: t1 o<?php
. a& I$ Z" m% j" ?; L9 Qif ($a==1) echo "我爱php" ;
3 f$ s6 \' s( B) S4 G, ]?>
2 `4 R6 C/ W/ |; L7 W# [$ v5 N5 c8 ]7 j7 Z
这里特别注意的是,判断是否相等是==而不是=。
+ F% }6 t3 s; u) @! Z+ ?范例:本例的执行部分有三行,不可省略大括号。 6 T% c, N4 g, @, b
5 m3 a+ ^% x- I, G. D" ?9 |<?php
$ h, W7 o: G- {- hif ($a==1) {
) z* H3 j2 A% [: G4 A4 recho "我爱php" ;
6 j9 q1 W7 N2 R5 U$ Kecho "<br>" ; \5 s8 y2 `! n( d" w
}
: i& x+ O) z1 C?>
: X% S/ S5 P% M% x' w7 [ z" p9 J6 Y9 q. G# M3 V8 h6 J- p
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
: q* e+ ~0 g- Y$ f
( m L4 I# S a0 Y4 Fif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
: |5 J; s0 o9 u0 _ c3 V# d9 t<?php
`$ w! M; e) Q2 Sif ($a==1) {
/ n8 h' K2 r6 C8 B8 @0 W/ m% xecho "我爱php1"; : J/ N& S& |( Y6 U9 l
echo "<br>";
* n# Y/ ~0 ?8 \; n/ Q2 Z& v}
* Q: p+ w! K- Y& n _6 Kelse {5 {% l% m8 \- b
echo "我爱php2";: ~8 i, v5 i% _7 `, N* D; _
echo "<br>";
4 p1 n' t" ~# J2 c* D} 7 |- G* O7 F; Z( g5 K" R
?> ' ~8 W. d# N+ O; F
2 W3 x. d& g/ V" j& a$ v! U
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。& y8 S V2 L. K
直接看下面的例子
3 N8 w: R* l8 B$ {& }5 j3 |<?php 9 z: Q% E' z/ f' d" s# I5 T
if ( $a > $b ) {
2 P/ r2 H" R+ Mecho "a 比 b 大" ;
- ^5 j& l9 A+ D: q7 r8 S3 ?} elseif ( $a == $b ) {
0 y2 F+ G# z$ X1 G" y6 ?9 eecho "a 等于 b" ;
# r8 @& G6 K- |. t} else {
2 U* X$ _: ^: L. V6 D8 [echo "a 比 b 小" ;
8 n) c4 K9 u4 m8 \; Z- g. I# }% n}
! p( a. d& p% [2 z?> 9 R* Z2 Y# O, h1 M; Q/ j
3 s7 O5 @1 g. g! b2、for循环就单纯只有一种,没有变化,它的语法如下 & S. ], m- K) r
- W6 \, e" i! n' C% H
for (a; b; c) { statement } 2 ?) V( a, N, C
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
! {' d+ E2 f S( _下例是用 for 循环写的的例子。 $ }' r2 r0 A* i8 Q- H$ q' c
<?php
) E# ?3 }$ T% Dfor ( $i = 1 ; $i <= 10 ; $i++ ) { 5 d' h8 Z# S1 T, c
echo "这是第".$i."次循环<br>" ; * Q3 J% w& Y% D+ S+ l
} 0 z9 [9 O: w% c' [+ f. u% H! i
?>
6 b( F, m5 h! h Q# H) O7 m* B- H' `$ D# z3 A; F, q7 n$ k
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
5 s# K* @. l& A: k语法如下:. ~& Q# o7 m+ P5 J
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
& d/ z5 y: `% `+ k7 {- y5 Z O其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
0 D2 U+ {9 Z! W1 k
8 B% c$ ^7 m" }9 S' s! U& Z. ?, `4 h<?php
$ B: ]# @: z' z" tswitch ( date ( "D" )) { 8 f8 Q/ o9 e0 F- O. a7 I
case "Mon" :
. d1 P- R- d3 t7 M& Y( h3 {echo "今天星期一" ; 2 D5 ?( A9 @6 K9 ]' K8 ~
break;
+ S7 z( W. e2 i5 qcase "Tue" :
! K! O: S- s- s3 J+ E, K" B+ l5 b {echo "今天星期二" ;
/ n! o* o, P8 K: vbreak; $ G% e) ~9 @ t8 y! I8 X5 z% Z' V
case "Wed" :
- I+ G; j+ I: Q/ p+ k- decho "今天星期三" ; 7 Y1 O! s: d( P- Q. C
break;
9 E. z, r" _, Y$ U4 v& scase "Thu" : % e( L* o( P0 o7 o! n
echo "今天星期四" ;
: h1 q) ?9 d# O" b, j& abreak;
' l S$ x( K/ `# ?/ C# U" U- h/ Kcase "Fri" : 3 b- X6 {7 v0 D4 E
echo "今天星期五" ;
; t2 H3 W& j# x r4 l- j. Sbreak;
Y; I( l2 J1 D, B) D" {* Mdefault: : O, D7 O7 Q* s" D- v5 ~
echo "今天放假" ;
1 U/ n4 n5 }1 Y' hbreak; ' {, D1 [7 T- _$ v' x( s
} - l) Y3 d- c: a0 \) x
?>
9 C7 [% \; o% f/ d! h3 B这里需要注意的是break;别遗漏了,default,省略是可以的。" w( z7 R' Z/ }
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
6 V. d7 b0 y% n/ c十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |