php的流程控制 ! ^) y6 d( G1 u& o2 P' |7 d
d# m! P C8 l4 I$ F8 B4 \8 v
1、if……else 循环有三种结构
7 l; j4 Y9 V: q2 b. }2 o第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
: B. E# @+ G- @: d$ p+ i
. Y- ], a0 s! D$ y' Z3 R5 K1 Z; lif (a) { statement } & k$ c' E1 @7 V- M
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。. t& }; ]3 }+ L' R( P9 Q
范例:本例省略大括号。
& v6 S) m1 L& _! t$ `
/ {6 ^# E" Z5 |6 Q<?php , ^0 ^7 Q* z' i/ O- ^+ i( Q
if ($a==1) echo "我爱php" ;
z4 H# [) }, z9 R! t* [% h?>
4 C4 q3 N! U x7 X
/ d J1 a+ X0 j f/ U; w这里特别注意的是,判断是否相等是==而不是=。
* E4 M! F; c2 Y( C范例:本例的执行部分有三行,不可省略大括号。 V+ b% e i3 S% [6 U
) t0 Y+ h% s- q/ s# A" \
<?php / S+ F/ G- B% e a$ s) w
if ($a==1) {
# _+ k( d+ x2 S6 O. lecho "我爱php" ;
7 n% R) n1 R9 ^1 {. I- techo "<br>" ;
r$ d/ i$ H- A" N" }} " d0 t0 z7 Y) U8 f6 ~7 q- l
?>
1 U7 L& }" n% y9 Y7 `1 ]
, W5 D7 b; u; c0 h* r: v- y0 k第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: 5 Y9 I) N& I; p
$ }; O4 I8 R8 g% k; T- k, Rif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
7 ?( N2 ~6 M0 G3 T2 E, M" v% L<?php ) `" t0 C8 C$ f3 b. m6 A
if ($a==1) {
$ b4 R2 X/ U; v. E9 Z* F( k P/ Becho "我爱php1";
- w9 C5 m4 U5 q' i! |- qecho "<br>";6 N5 p H6 M8 L8 L- q/ B9 n
} 4 i8 s1 L, L! \8 H# M3 J3 W/ [
else {
& A' z6 R+ K+ u6 Z9 a* M/ lecho "我爱php2";, Q/ n; y! M. ~& |. I8 n3 i1 X
echo "<br>"; 4 t1 a, q) Q% Q3 I
} . y# H0 {$ c* `" G2 j9 @# S$ w: J
?> ) l9 W5 `9 i+ r) X
! ^3 f) b, I, h2 D5 Q
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
E4 D5 c3 F0 q直接看下面的例子 4 {* O3 S: o4 F, B
<?php
; m8 n# U* _: m* Eif ( $a > $b ) { ( T7 k+ H$ E5 {; ^6 r' T- V7 \
echo "a 比 b 大" ;
& X. n0 ` G I3 ]& s} elseif ( $a == $b ) {
6 y* ] q* [9 c- v- b! E8 kecho "a 等于 b" ;
5 y$ `" T: x6 g# Q, z5 I: b) @* r} else { , ]* v/ p5 y2 a1 C ?6 h
echo "a 比 b 小" ;
5 t( S+ w$ L3 l! j} : o6 _9 z4 [1 T! O/ `8 W
?> $ o% D, L: ?$ `7 Q3 ]0 K7 e% T
4 t; D) B: i8 A& P: p; c
2、for循环就单纯只有一种,没有变化,它的语法如下
! ] h: G: }& c4 S: i4 }+ D% r
0 f1 [' u: ]' e, I, ffor (a; b; c) { statement }
0 \5 Y8 w8 f: p7 w( u( u; W其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
$ ]( o" q7 J8 N下例是用 for 循环写的的例子。 / ]. S e: W$ o7 c9 _
<?php ) E1 g: F m5 r1 O: t% {7 I* r
for ( $i = 1 ; $i <= 10 ; $i++ ) {
( ?( \. l- U$ }echo "这是第".$i."次循环<br>" ;
1 j& A5 X* G. U$ c}
1 O0 }4 {+ r, a6 v8 d$ \?>
% p* l4 {: |3 C+ z* B2 N6 U7 b# ]2 t& Z. n5 K
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
7 V: T* c5 q" ^! b3 j0 q% z语法如下:
5 t9 i( E) v, f- qswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } " _6 ~0 Z1 l/ q# @0 M
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 2 h$ s O' v- Y, X
: g+ G) N* E' C# ^/ C7 z' C) K<?php
; Y) D& T7 G2 [* D$ uswitch ( date ( "D" )) { s* _ r' ^! M5 F
case "Mon" : 3 b2 C0 ~& } J/ v& G
echo "今天星期一" ; . [3 U& a: a( A/ z/ o
break;
- ^# u" y1 I+ Mcase "Tue" :
" K; l& q% K+ B- w/ S' Decho "今天星期二" ;
, L6 x. E3 K5 x& a: @& `break; 8 z3 o' F3 |, {% p x& [' ^
case "Wed" :
7 j& V) D& l2 Vecho "今天星期三" ;
% k1 S1 @) ?) P) {, u, Sbreak; ! f0 }0 y9 o) _% W6 g+ {' H1 C
case "Thu" :
& o, ?$ T! \ Gecho "今天星期四" ;
+ I+ p" V' h$ C$ C$ U. Rbreak;
; Q) h# j* K) [case "Fri" : ) W9 O, `1 ~4 h9 d& `# C2 X% p
echo "今天星期五" ; 9 r& w* q: G' i& W8 v, \4 p
break; 6 L2 X4 m( P9 j
default: - c& p; E2 O3 L
echo "今天放假" ; " g# p7 E) T0 k7 g
break; & e5 N3 [# M7 J: D, j
} 3 P# y- p+ F$ p" l: y& [' s
?> ; F O3 k8 K4 g ^9 x" N
这里需要注意的是break;别遗漏了,default,省略是可以的。
% Q; `) e4 V& v4 F很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
. o1 L, V" |/ [十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |