php的流程控制 ( A7 k6 b( J* k- D. e: d8 l
F( @5 M# R1 l- n. x+ h
1、if……else 循环有三种结构( D4 |6 Z. `2 t4 f6 i) D
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: 7 j" z' K) E1 X/ L
+ \( `: Y. m% o5 j h
if (a) { statement }
" Y+ N2 I5 t" A5 m9 u$ f/ j6 [其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
3 M: ]0 b9 e. _8 C6 L! u# w范例:本例省略大括号。 / H5 ^! ?1 S* F! A# o1 e
2 ^6 \# `7 b5 S s) m8 s( e
<?php 1 y% F$ s/ C+ g q, \9 D6 w
if ($a==1) echo "我爱php" ; / {' s7 |: G) \- y* b
?>
: n& c4 f) J) Y5 a! n+ N' Z' k0 G: n$ J1 k1 J2 A+ ^9 u- k4 `1 I
这里特别注意的是,判断是否相等是==而不是=。
$ M& r1 C+ i% x% L. }' t范例:本例的执行部分有三行,不可省略大括号。 7 h* o- A+ ?; M4 B9 A; B" i9 O
$ V5 M+ a& j+ f6 L1 F& U
<?php / b1 z# A( w+ k9 e0 l
if ($a==1) { . v# [( h0 {5 P: S" Z% d
echo "我爱php" ; 3 P9 n% W# n1 _. y% h$ D: A7 G
echo "<br>" ; 9 \) x/ K; Y: r9 t8 U. l% X
} . t+ W+ X6 W; r* d) l3 e
?>
! G2 n/ `+ O4 @+ h( F4 K1 s+ F/ ^, U/ S; e5 ~
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
2 `6 W7 a+ I9 b5 Y3 r" ?: U2 K
3 i% f" t. W! @, e: ]0 ^if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
9 ^9 F0 `" x6 A o" U<?php ! I: D2 P, N3 Z1 J D
if ($a==1) {
4 O* F$ P5 y3 i4 t% H8 J: }echo "我爱php1";
/ t4 _- a% T3 oecho "<br>";
# z+ ~0 R+ F6 w) N* Q. \6 B% Y3 Y} : `) z1 U) T1 _. @: [1 r3 ?% h" k2 G
else {( E4 T: q8 p4 G7 V. I
echo "我爱php2";
+ J5 A- j7 \. n! m2 m2 d cecho "<br>"; 9 g g$ Z9 ~, D J! O* P
}
- x* m% D9 t7 c: m; _4 j) y/ E?>
, s* l) R! |5 h+ T, B& R3 H
7 D. h" K- f/ ]" S% z第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
' I2 e" h) o8 w& V$ r( f$ U直接看下面的例子
% F0 t' E- Q! z9 @/ B( F- ~<?php : O0 w: r9 Y+ ]& K' r9 c b! h
if ( $a > $b ) { 6 Q, j& S( H( {# A3 k
echo "a 比 b 大" ;
/ c4 f0 ?& H( }( Y' t} elseif ( $a == $b ) { 7 j/ T- w" c! g+ r) o d8 z) R8 H' b
echo "a 等于 b" ; # n1 e7 |, {2 _! N* O
} else { 1 R3 ` r2 k; U! G& c
echo "a 比 b 小" ; 0 ]: I( a- H6 T+ r
} 0 `; C G/ o: [) c/ [+ O( Q
?>
& K/ w3 v& _$ p% q. t5 q# b9 f/ w, q" o" I% ^
2、for循环就单纯只有一种,没有变化,它的语法如下
) j- U) X+ b3 t" v! j: ]0 o4 M7 g7 O& g [( B: E( s# Z/ R
for (a; b; c) { statement }
3 M, m! S, c- o% k6 l+ Z( v% A其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
4 t5 _% F" ?/ b' A( j下例是用 for 循环写的的例子。
/ X) ? J! A0 a& d7 \<?php
5 ?1 z# {+ |' V. \: H5 ?! p1 jfor ( $i = 1 ; $i <= 10 ; $i++ ) { % e8 J7 b5 c0 Q1 Q Z$ n
echo "这是第".$i."次循环<br>" ; 1 z( O |5 t5 O( O0 Z4 ]
} ' @2 l. b# [7 Z* c, {* M
?> ' L( Z& n, n/ O
/ _- y& L; P$ L/ z( i/ A) Y3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
; g" Y F6 g- R$ ?! }: ?4 r语法如下:- F% E/ H2 i7 E2 D# @
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } # S9 \: P9 k C$ g
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 & _7 J8 Y5 P8 I) ?% a
% x9 g/ _8 E7 I7 z# q
<?php
9 W4 Y0 l& o& W/ ]& ~. R4 Bswitch ( date ( "D" )) { ; C3 z, ]2 |/ B$ h' n1 c/ I
case "Mon" : ( A# j- }3 A4 g8 ?5 k
echo "今天星期一" ; 0 H: {% s F! R& H" r9 ?
break; 9 }" E1 |# N3 x5 w- M; r
case "Tue" : 6 R6 M& L' E7 B6 m. a6 j
echo "今天星期二" ;
! \) i$ M0 J, h! Mbreak;
' l6 ~& }/ }+ d: \% Z, d4 ?4 y2 Wcase "Wed" :
9 C, b( R9 {( O% \$ `: ^echo "今天星期三" ;
8 T" I$ D4 a$ D& abreak; 5 o6 D0 z7 m& |; a3 ^6 _4 L3 D1 P
case "Thu" :
. Z' x. x8 Z* l3 u6 n+ i/ Q' J) e6 recho "今天星期四" ; , v) U: b! u. ?5 A( d+ L; V0 B5 R& d& D
break;
5 n2 [' Q% j/ y, qcase "Fri" : 7 w! e. Y; `! v, [9 x
echo "今天星期五" ;
# p' S3 k! ], B* S) y" E5 Ybreak; $ ?: `5 Z0 z9 J0 y; d# e' T
default: ! b5 q0 ~3 E2 h% f
echo "今天放假" ; & V/ c8 r. [: s. A% N3 f+ I( U
break; 9 E$ |5 j; a7 a
}
3 m j9 v4 u- I?>
$ \3 F6 F/ N& ~) O8 O% y0 |9 J: e这里需要注意的是break;别遗漏了,default,省略是可以的。
2 B+ t9 ^" p/ I6 B/ I2 @很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。" `4 X7 S( n% L1 K# q* V2 S
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |