php的流程控制 0 Z& Y9 w1 w' ?# A' ], x# ^* \# `
6 ^! F ~; Z7 {" I6 U0 e/ C0 G+ R, P
1、if……else 循环有三种结构3 k- M% J# U& s* G
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
6 d1 n, q- L: `
% i7 O1 X! ^, _- _4 o' h8 ]4 kif (a) { statement }
( D5 ], I: u$ E' `3 m* u6 w: Y5 a其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
8 \# g( B4 H }范例:本例省略大括号。 8 K9 r! T" {# r# ~% I7 |" H6 h3 j
8 a9 i/ ^& X3 x0 ~& h/ ~9 e1 r<?php
3 d+ ~1 n& |3 R7 P! ^if ($a==1) echo "我爱php" ;
. W x- q8 b' |) r?>
0 v7 z9 h& W7 N" |1 ^2 e4 I
' g6 w0 x. m' K$ M$ Y& d1 j这里特别注意的是,判断是否相等是==而不是=。
" E1 q( s4 Z$ s9 {% r" h范例:本例的执行部分有三行,不可省略大括号。 3 K/ k$ W% @+ D5 S- E
( o( s5 l$ M$ E& r3 }/ p
<?php 8 x& ? I: c: i- @2 W. N$ n
if ($a==1) {
( L: c* Q: Z! G( y6 Hecho "我爱php" ;
- y. o7 J5 S- U* decho "<br>" ;
& |- D3 d, N1 v}
6 p: @# [+ ^. g, Z0 B! H) n* x' m?>
9 @& C/ G- g) A. f Y; L8 ^3 l, J
, L+ o( L8 w% v, S" A" r# w# y9 W第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
% n7 h& H7 y: D% r7 ^4 o0 O* y( b4 S7 s0 a6 c
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 % {- g! [) R/ o7 ?$ I& G, @
<?php 0 @8 s) N2 s: Y" [; h$ O, e3 W
if ($a==1) {
! r+ w# V8 O, X7 J- a. C( ^echo "我爱php1"; ! J( D- j- g/ ~( \& [) a
echo "<br>";
. m. F, y6 x {/ m- j5 s}
8 X" u! {, Z* L3 r% gelse {
+ w# S3 t: K. y- t: Zecho "我爱php2";9 F' b" h* J. P- g
echo "<br>"; W0 O2 c* g2 `* M- R
}
" c* C# K8 u. n2 u0 E?> ' ~# R/ B2 d* ]7 U1 H
0 h6 I9 Y4 ^: K- I
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。$ c8 w' Z. j, C
直接看下面的例子 / c( S; ]4 V, h# D* w& H# Y$ f G# c
<?php / Q1 t/ I; p( b8 R- \8 e, U
if ( $a > $b ) {
+ ~& m1 t1 @9 H7 M Z) n# f5 cecho "a 比 b 大" ; # H: |/ o3 f- T* B/ f2 u
} elseif ( $a == $b ) {
M2 A8 ?/ K# V/ @7 x* decho "a 等于 b" ; 8 p0 W$ C2 }& c
} else { % | z, B$ Z9 I. ~' D
echo "a 比 b 小" ;
8 A8 X0 k k! R}
" `9 l, m8 _. Y7 t1 ^: m; W?> 4 w$ p# b: X: A1 u0 X A& F V& s
1 E! V/ M; G! O$ T6 B
2、for循环就单纯只有一种,没有变化,它的语法如下 5 n ]3 C& i) |: o7 G! ~ K
8 D6 Q8 B7 x* ~
for (a; b; c) { statement }
r6 C# d& K7 T, J$ P其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。7 w! C4 A7 o8 f6 l' G$ Z/ I
下例是用 for 循环写的的例子。
6 T$ Q& s9 p5 j2 a* p1 h7 H4 T; m* o<?php
# z1 j" ]9 l/ Lfor ( $i = 1 ; $i <= 10 ; $i++ ) { 6 J j4 E5 t& ]5 ^+ }
echo "这是第".$i."次循环<br>" ; ; v' A/ b% A. e# _) P+ J- s; R. ^
}
6 `8 i2 Q" c3 U. y8 \' J: h?> % z9 X; e0 c% V& L; t+ x
3 c; ], V. K, p8 k8 u3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
0 [% y' L3 Y7 J, v+ ~' t- c+ A! `语法如下:
2 b+ D$ i' @) V* i. }9 _1 Aswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } ; t3 y' I( P5 {/ Z% Q% X# c6 _
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
, E( p0 B' O* ~2 N9 P& O; u3 _2 ]! j: q: \/ X, `/ U$ j. w/ x
<?php " D& W, }" N8 ]% r
switch ( date ( "D" )) { ) d; ~) a, @3 I3 g7 ^7 d
case "Mon" : & S, o/ e% f; s G! ?/ ]) D
echo "今天星期一" ; 1 a. f6 t, e; N$ [2 ~2 S
break; 7 x% [+ d+ ]9 u2 w" l1 x
case "Tue" : : q' b2 u R& Z8 T4 i: g
echo "今天星期二" ; $ v: j& X# ] {0 X
break; 6 X, l" [3 @4 l6 f3 S- i, }
case "Wed" : 0 y% H! b5 A4 t: `( ]2 d
echo "今天星期三" ;
1 P) s; y) @$ g- V1 O4 ~+ L0 rbreak;
9 o* D) X; z5 |9 ~case "Thu" :
3 {' [ U* Y7 m( Y( J) ]echo "今天星期四" ; ' ]$ e- }* V! U" E# A* ^
break;
- N6 c4 ^) _* [/ K: w' l5 Q! |& Ucase "Fri" :
, P& H$ n6 {& y) Uecho "今天星期五" ;
/ f4 |$ W( T; ?8 i6 ]% jbreak;
# X: Q K1 c& a0 i3 n1 l) G* Ndefault: ' B. E$ d$ p1 N+ L
echo "今天放假" ;
Z9 Q2 N: o( p+ Ebreak; 8 w( Y* N8 A0 g4 g+ s. T
}
2 @. ?9 U, Q' O9 U?>
. b' g5 y; [" v7 I" a. e* {6 w这里需要注意的是break;别遗漏了,default,省略是可以的。: y/ Q# g2 d7 n! t5 B: L
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。5 E! O* o* p9 _* i. Y0 ]( ^
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |