php的流程控制 8 P8 \ ? Q' Y2 Q3 Y1 R
& c, u0 H5 A* `, I7 G: c1、if……else 循环有三种结构
. x3 s! V4 ~- Y; E/ F" q% |: I7 z第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
- y/ v* w& A x6 k" \5 d" ?6 e& D! `, r3 ~$ k: G6 f; g% |/ b
if (a) { statement }
6 r* Q0 f9 I2 ^) H9 B其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
9 V+ K" q6 p% \* C- N, g" S范例:本例省略大括号。
" W; W; C' u. h h( O6 i
7 M2 g& j9 B6 J/ m<?php
, ?+ e" O9 d( a% Q7 V( R: Gif ($a==1) echo "我爱php" ; 3 s, p' X' ^& d( f! }
?> % J% V1 Z2 x( {9 W
) c. E7 I7 j8 J* q. g' Z
这里特别注意的是,判断是否相等是==而不是=。
3 ?7 i+ h9 e+ j$ E& J范例:本例的执行部分有三行,不可省略大括号。 - \/ y- `8 ?7 F0 t3 C7 T! O8 m Z
1 x' w/ S! i/ |<?php
# u4 _2 w5 c6 c5 f$ S1 ^; pif ($a==1) { + W1 Q. S' L8 N/ r. u9 |* N# w% {
echo "我爱php" ; 9 ]; x; J* j4 l6 H: G/ y+ o9 w
echo "<br>" ; ( A0 |. `9 r' O7 S; \* Z9 v! u. r
}
8 m% W& w% O# l: v5 q3 J. c?>
. a. ~( G g8 [) U% X$ E* g) l9 e) m. _! Y) y
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: , y( s. r7 O" W: j: a3 b
/ U, W/ M( O- t$ jif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
/ u! l2 h; z, v. ]0 E# Q<?php ' x3 w3 @0 ~: ~% G$ K
if ($a==1) {
5 U8 x* U* n% H0 O+ y9 o2 p' j( b' Iecho "我爱php1";
; a a- E7 V. n; G$ @ `1 q; Oecho "<br>";
1 z" d. Y, Y9 [3 C! a}
0 D1 ~/ t' E* g; \) velse {
0 r0 [! e4 A' O. L gecho "我爱php2";
, x6 l. D/ C( @8 I1 `3 M& M2 x8 X; vecho "<br>";
; Y% a0 t0 e4 R* `" Y' a' Y}
8 I0 o3 E5 ^9 K, D" v# j?> $ i( {* G9 m ]" P
$ O" }% f0 l6 {( T; V
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
. H& }' [& D! f& H; l A5 C Q直接看下面的例子
8 }3 e+ R5 f4 J9 a<?php
7 U* t; }, X- N8 W0 B' {if ( $a > $b ) { 2 L+ S& `! |2 q8 W4 B- a
echo "a 比 b 大" ;
4 [5 }3 u8 i2 U% z" h- s* a& o} elseif ( $a == $b ) { & @3 f" T% M/ k. r
echo "a 等于 b" ; 8 v M2 ~$ O; X' U& u( }" W
} else {
& y7 o2 g" G5 h7 \2 Q- qecho "a 比 b 小" ; ' q w- k( K; N/ A5 I
}
, q/ |% }- y/ _?> 0 k7 ]1 P) G) @9 q" W, L
" |* I& ` x7 F' {' I- s2 o- W2、for循环就单纯只有一种,没有变化,它的语法如下 9 |: o, i! ~, Y, \% l8 v0 o' V! x" h8 b, V
- I1 L$ A, P; Z6 d6 }2 _* zfor (a; b; c) { statement }
( Y. a, W: `% V+ | w/ X" N* I其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。, J0 M) y% n0 d/ a' e8 X- q" d
下例是用 for 循环写的的例子。
' m$ D% A0 y1 W, }2 }& e6 C. m" h# u2 s<?php
" a* u. H* \' _4 X' Rfor ( $i = 1 ; $i <= 10 ; $i++ ) { 1 V$ }; f6 i8 P6 l
echo "这是第".$i."次循环<br>" ;
% C: _1 d/ x/ q+ N+ j}
* w/ _+ F5 @: K' S$ Y?> 3 L+ _' @; Y! x5 n
( e9 {# j$ m3 E2 M' r3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
: g& W# a5 z6 p' V1 Y$ L7 n) V语法如下:4 g+ M" A2 G0 Q x
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
) E4 I8 W% Y6 U. j) Z5 j其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
0 _7 a$ _! ]. B: L7 r/ R5 [8 M9 i& S& s1 n: ]
<?php
* W; P7 f1 n6 }; t _. H: |( ` bswitch ( date ( "D" )) {
; v+ X. e: J! r; i" w2 ycase "Mon" :
0 @' G4 ^0 K& N9 T; h1 v* Oecho "今天星期一" ;
( j7 u) @: g; c h w: y: K: Gbreak;
$ r& d& N; e Hcase "Tue" : % M9 n1 u$ m" L( R- a1 T5 b: O
echo "今天星期二" ; 2 C% _0 i& s, E1 C/ [+ `9 K: k
break;
2 N4 w$ i6 g" r, y3 g$ Ucase "Wed" :
* ] @/ {. l7 P' ~echo "今天星期三" ;
1 G2 ?9 _# a8 ~1 Hbreak; 8 Z& Q; S9 u& g0 z3 n w; l
case "Thu" :
. X, k: q0 ~* g6 g- `7 Xecho "今天星期四" ;
- N* O, R2 F/ x4 u3 {5 m: L+ Bbreak;
# x) [6 A0 e# w2 F+ C8 u6 I$ u' dcase "Fri" : : c1 o, n# ]. @' e7 r0 m% k
echo "今天星期五" ;
8 K/ G- F4 a+ dbreak;
+ w* Y0 A1 m' Udefault: 3 Q+ t! g& e- }2 }
echo "今天放假" ; ) P. u) k; y$ `7 ~5 B8 \
break; , Y, T! n0 q7 }/ m a0 H1 V
} 8 w: q+ O: l/ V0 P" Y
?>
+ o' y% ?, R8 D1 p9 U! B- T) ]6 g7 B这里需要注意的是break;别遗漏了,default,省略是可以的。% s" O7 R7 i8 B2 j% W1 A9 o
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 ?! d; P! `( l2 I i8 c X# v) w
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |