php的流程控制 , l2 I1 k0 ^% }( D T9 p
1 m% ~: f/ m$ E3 z% a+ }1 j
1、if……else 循环有三种结构
; X# r0 I i, L第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: : Z7 `8 |5 [* B/ U, N" z& z
* B8 t/ d4 ]4 y1 _+ d5 |
if (a) { statement } 6 b% _+ p7 k5 ^& g- a( v
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。, a1 [. K- G3 [" o
范例:本例省略大括号。 % |6 ?' C7 Y8 j z G
8 o7 l; |( s' z' { u/ ]<?php $ d) f, f" N6 H& y6 d9 g1 B, P$ a( E
if ($a==1) echo "我爱php" ; ) a7 B' y+ @6 [
?>
; I$ @4 {* ?- a. c+ }2 Q! |2 x& u+ I# M% b" g
这里特别注意的是,判断是否相等是==而不是=。
5 q! I( r; T0 p7 f$ o范例:本例的执行部分有三行,不可省略大括号。
& g: z/ R6 B; n H5 t( w* a S
* g* f9 M3 Q/ Q r0 r<?php
4 T0 `) @# P$ E' Eif ($a==1) {
3 X8 e K8 L0 `$ C g8 k& }echo "我爱php" ;
& |, \/ O, u+ D, eecho "<br>" ; 2 n3 Q$ a; U; V8 m0 \+ V
}
% S& A- d, j" ?6 s( ~- x* a7 d% ~0 S?> % e0 M3 C2 p: F W4 X* H
) ~7 j" X6 F2 P) R0 G3 ]/ p' q
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
$ G! z3 ~- u9 P1 H' f& D
. D1 b3 i0 l* [2 G' b( F& oif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 1 g; D3 ?2 G9 E& | u; y
<?php
& ^0 |0 ], Z {! P' fif ($a==1) { 7 A0 h, y1 M" x- ]
echo "我爱php1"; . B I- i: ~$ E o5 t3 Y. `+ `
echo "<br>";4 B3 n# e, m8 G& q
}
, C4 M3 @. O/ U; n, Relse {
# T; n/ W# |# ^; @1 iecho "我爱php2";
+ N2 Y4 I4 H {6 xecho "<br>"; 1 S8 X. v9 X* _: p) p1 s. z1 }/ |3 Q' H
} ( ^1 b1 f$ _$ f9 Y& y$ a
?> 6 R% Y( N* U* l. L$ M
, K( W# u* h4 Z5 j- I6 ]
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
2 N& s5 p1 b9 W2 r5 r直接看下面的例子 9 n' R- K1 \/ ~# i( O
<?php
# U3 G% a5 c, _. r/ l+ d5 Vif ( $a > $b ) {
z5 A; M7 s) |& Y- n* iecho "a 比 b 大" ; - ]9 a1 K6 U0 O9 L
} elseif ( $a == $b ) { $ K( \( }" J F2 R/ l5 E
echo "a 等于 b" ; 7 \4 ~' W0 ^8 f8 P; W
} else { 4 d8 C, |# c) x9 e8 N8 s
echo "a 比 b 小" ;
+ z" m- u' V. L- u6 }8 F2 @}
# B6 l. x) N3 e7 `6 |! p5 w- i?>
! [) R8 m' U p- l: I9 t4 X6 _$ b' e7 q+ s$ Y1 |
2、for循环就单纯只有一种,没有变化,它的语法如下
8 }+ F" v9 v( v
4 |1 [4 G/ h6 O9 G7 vfor (a; b; c) { statement }
* E8 y) R4 G4 O+ t/ d其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。$ g3 a; K$ G+ S c: `8 a
下例是用 for 循环写的的例子。 - g: ^; M5 f R, B' o
<?php
1 Q2 Z4 z4 @3 O" Lfor ( $i = 1 ; $i <= 10 ; $i++ ) {
4 ^8 t {& l0 ? |& yecho "这是第".$i."次循环<br>" ; 8 ?8 `, ^7 p; _2 s( w4 k
}
8 }7 v8 \! C5 d5 S5 V/ x( L$ L?> 9 L8 `- N; ?: V0 ?) y) [3 p
2 K8 M4 k6 m& i5 n' t' _9 k3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
6 T! @: J' h5 B c* f% G语法如下:
$ j& s" a7 q/ [/ kswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } x# H) s8 J1 A$ q" D [+ P4 W
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 " \5 S2 x, C/ ]" B- K4 o1 Z& x1 M
1 J$ }( `/ y& B$ d& a/ _# O# i<?php
, u3 H2 q4 H3 v# V" ^switch ( date ( "D" )) { 0 K I' n# W3 n Q6 s3 \) n
case "Mon" :
0 |. S& m5 [" T# V; pecho "今天星期一" ; 2 v5 J& C# o, L6 y
break;
T) Y) c# H8 pcase "Tue" :
) @' E4 }/ K) h* O& Vecho "今天星期二" ;
% f9 N, Y5 z8 k. }1 ?+ g' Xbreak;
9 W- R* Z/ F! Z9 B" Ycase "Wed" : 4 I" F, J+ k, Q
echo "今天星期三" ; ) t6 z( A; Q1 k9 U" l9 L8 \% \
break;
! V% Y* A9 a" C6 c1 M* v Q# qcase "Thu" :
4 c3 T+ d- w& V4 G+ J. {; Xecho "今天星期四" ; 5 h. }/ _' [- K8 q/ Y% K3 ^
break;
, ~% |; n( X8 T9 Z9 ], J; H( ]/ tcase "Fri" :
+ |' v- b0 m( q1 m9 n+ f$ kecho "今天星期五" ;
4 D3 O' y* w# u* i5 Nbreak; ) @- i8 e$ Y* y
default: 7 S9 ~8 Z: V# I# v# r& ~, b9 D
echo "今天放假" ;
% f& H3 L5 |0 Ubreak; . {# R" T) c: v* ~1 |
} ; s7 w5 t' l1 N
?>
7 |8 D6 w: O& w6 q0 f这里需要注意的是break;别遗漏了,default,省略是可以的。
9 r/ V& b- ~( U% \很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。) Z' s/ }7 h2 A
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |