php的流程控制
0 A5 x. T: n) [9 a) ~2 T B2 M
' X O9 ~- a# B" P+ D1、if……else 循环有三种结构
/ _$ @, d9 a5 N" b& A第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: ; i; S- G2 M9 V$ p* O, |' V8 n
7 }& `0 G) g) i7 y: N( j
if (a) { statement } 4 Z6 G% _9 S" d. U9 H" [
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
# T; `* p5 H' h8 t9 ?6 y范例:本例省略大括号。 & A% g: T; ]9 y8 K( R
! o; r: V( g5 z) Q
<?php
! U& J$ L5 E: [6 Hif ($a==1) echo "我爱php" ;
' @$ X6 e% [( t9 \8 {, R5 ^; n?> & F8 R6 [: z G: n
! [( Y8 u( x! N1 y% e这里特别注意的是,判断是否相等是==而不是=。
2 y1 r# p$ N. w% g范例:本例的执行部分有三行,不可省略大括号。 $ l9 p1 M+ A& L1 A" J) G
3 T# N. _1 R3 h# _5 W+ q
<?php
7 G$ P0 V6 k g% \6 g. E, t; v& A1 Cif ($a==1) { " a9 U+ q, {# } y. K
echo "我爱php" ; # h$ S6 ^8 k% Q5 K! D7 J [) r
echo "<br>" ; ! a( r+ r2 S! ?1 q- `4 Q9 V
}
7 Y( v: f0 \6 ~ p3 S! k?>
) i P' e. n! @) B2 f- M$ x! v- W. M. T6 {
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
0 m+ c" k" Q3 [: s* Y s, D
1 E/ Y3 v' }; h4 Z- u# Z/ tif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
3 a/ M0 z2 _$ L; v% ~<?php
h% z* a/ W d, c' {8 Yif ($a==1) {
( T. Q# q, D( A% o+ H! ~7 decho "我爱php1"; # e/ _( A8 R& O4 U2 f9 p- O
echo "<br>";4 |! {& U3 K7 c; V, {' F b
}
# r) I X6 F; O4 a+ ~. u# yelse {
0 b+ G( `/ i& Q( ]5 kecho "我爱php2";5 _9 `7 i" b2 T* K7 F5 r
echo "<br>";
; I8 c# B8 F$ E- L}
- e0 S8 h3 u' P1 h: H. _( `?>
0 a; q9 D# P- ^1 ]/ }5 w! G6 D5 B) E2 B. q7 P$ P* A) L! [' E
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
; P3 h4 r% }* b, i3 G$ e+ P2 F直接看下面的例子 " j ~" Q" D$ R# [% a
<?php & W5 M2 ]7 w8 u( [2 t
if ( $a > $b ) { 8 x! p0 q! E* x* O% d
echo "a 比 b 大" ;
+ H+ z2 y# ^2 f2 A3 j% d# w5 I} elseif ( $a == $b ) {
: m( E7 t* N; h+ e9 vecho "a 等于 b" ;
9 [/ k3 c2 b1 P} else {
5 z' i9 }6 o2 P/ X1 W4 ^/ b# lecho "a 比 b 小" ; 5 O6 b1 n. q4 t d5 E- [/ A3 p
} 4 t, V9 r: k( K, t
?>
- {6 S' S. f9 ^. \/ n( }& b
# X0 E4 J2 a9 k1 U2、for循环就单纯只有一种,没有变化,它的语法如下
u0 X6 ` p9 a1 @8 R R6 {+ e* a G
for (a; b; c) { statement } % k- h. x2 K9 Y7 Y
其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
& ?( f: ]; W6 E6 B下例是用 for 循环写的的例子。
( m1 Y( i4 Q# \' b, q6 K0 \<?php 7 H* j6 W7 ^# p" {$ r& n
for ( $i = 1 ; $i <= 10 ; $i++ ) { : F: z. u |7 G/ y/ c
echo "这是第".$i."次循环<br>" ;
+ u/ T2 G% G0 r% B& G g/ T/ _6 U, O}
# A% g' L; z$ X! |?> 0 `2 c k; j; y: \+ q# u# E
6 E6 G, R7 M% h" W9 B
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
4 X# e* I( b+ y% t/ I0 X语法如下:
. d+ @4 v. y1 w6 f9 uswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
6 l' Y0 n- L/ ? r其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
; B9 ^% k _, p& W1 C, Z. @- Y
- t* S8 \' ?( u& F% ?# {0 h<?php
! l* Z3 x0 L/ A: j& X2 f# B9 y2 sswitch ( date ( "D" )) {
5 b/ |- d3 P3 E1 Kcase "Mon" :
7 o/ V+ \; r f* ]. U( R) Jecho "今天星期一" ;
! v/ X* s. c8 [; i# ebreak;
0 y5 ~& u0 H4 r1 L- e, w7 ^. scase "Tue" :
2 J* y; E$ \5 T( p1 g, n! _ Decho "今天星期二" ;
: P7 m6 V- b9 n9 \break;
, O# F8 i$ Z) p2 ]. A( c& r2 Jcase "Wed" :
" _' ^9 d3 ^. F! n* Aecho "今天星期三" ; & o( B% g6 h$ E; D! ^
break;
9 }* p% v @9 p4 B5 H. |case "Thu" :
, Z" S; J9 S3 ~8 a5 Hecho "今天星期四" ; 1 ?% A& }0 O0 `7 ^
break;
$ M6 h" q: {8 ~! [case "Fri" : * T; [- z/ l; H* p5 Y
echo "今天星期五" ; 5 f, Z6 \- P6 U/ t3 w+ Y; F
break;
: U& Q! b. b( \! `" pdefault: 3 ~. I/ R: I, ]: Q' \
echo "今天放假" ; 6 |; ]/ D+ {3 c; T) F
break;
* w0 U$ Z, H: _$ w& p/ t}
9 U* n6 K1 Y# O" z3 ^5 ?/ ]/ ^?> ' h' C2 [/ E" g
这里需要注意的是break;别遗漏了,default,省略是可以的。# O' \+ v; o2 O x6 y
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
* P7 C4 \* B# l9 X十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |