php的流程控制 8 A/ g" w" s7 E
6 f, X0 s9 p6 o9 A1、if……else 循环有三种结构" t- Q: L+ e T1 O: C
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: % Z$ j: U1 P; a2 Y7 ]( q
% l% e* n% Q2 G i# `7 i
if (a) { statement } 1 @6 V# w/ g; L1 s0 [3 S' M( `
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
# d- G" {! I9 y& @范例:本例省略大括号。
1 Z8 E h* H+ E. p& T/ P0 R$ l4 H9 W
<?php / E) x! g6 ^6 k
if ($a==1) echo "我爱php" ;
$ U6 v8 C) ]1 H; q?> F0 g) t, o/ p" `5 u
: t+ B0 B/ M1 U8 U J
这里特别注意的是,判断是否相等是==而不是=。+ G7 t2 m: t) A& e
范例:本例的执行部分有三行,不可省略大括号。
+ y! C2 t- \* _2 o% O5 U% O0 X8 L4 T; @
<?php ; @ Q* p: v( e0 ?/ E
if ($a==1) { 7 ^$ h+ G; c# L) U' Q! c
echo "我爱php" ;
6 Z$ M* Z9 ^! H: zecho "<br>" ;
) B5 |8 Q4 t) M1 H9 a2 u} * X) U4 y7 J1 Z7 O) J
?> 0 y0 x w N) f( U
) o+ u9 }6 R; r3 S
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: , w4 u% d$ f9 P V3 _! N
! O q2 S1 k, a0 w9 A6 | nif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
* a, r! I$ G- H/ Z3 \<?php 4 n! x( w' O3 G/ i9 N0 o$ z
if ($a==1) {
1 \' `0 L" y, g8 |- kecho "我爱php1";
* B+ f( _* T% L3 becho "<br>";
8 f3 X0 a! J( S _3 l. ^' u} ) M" W0 O5 J/ S% K
else {
, g+ ^ V/ b4 {# {1 o secho "我爱php2";
3 q5 r- }% ?7 ?% B# ?5 uecho "<br>";
7 g3 {/ D- f( q0 c1 F- ~! {' J} 1 u+ F, G0 ?- P* _2 ^* E
?> ! C5 c; _* n y# J
$ J' I$ u! W% E7 j
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
4 [" R% `9 d" i3 _9 b+ E直接看下面的例子
9 I9 ^/ t" f$ @* i<?php
/ i0 n. {7 u+ }7 Uif ( $a > $b ) { 8 a2 R' E- P7 V7 x+ [
echo "a 比 b 大" ; 3 l# q* p+ @( [6 }, C
} elseif ( $a == $b ) {
4 K6 h% S) I% k& P& Lecho "a 等于 b" ;
8 {6 W4 h; A) H4 q+ O3 c} else {
5 h: `5 D! ^4 cecho "a 比 b 小" ;
, l: I2 ~7 A- q. F/ q8 U* D1 N$ q} * |0 h% u6 W' u6 g" k$ A% A
?> " d8 |2 P: q+ E2 x
: r% K" Q' U: L/ n
2、for循环就单纯只有一种,没有变化,它的语法如下
/ f. }0 z, S k2 n7 t* M u1 z# W: u7 D
for (a; b; c) { statement }
4 o& B% m2 J$ B8 |8 ?' o5 r9 J1 R其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。; p% F3 I7 Q2 u, Z& u9 n+ F
下例是用 for 循环写的的例子。 / r( V+ W$ r4 L0 k& B7 K0 \$ r
<?php 1 U" ^ Z7 Q- N
for ( $i = 1 ; $i <= 10 ; $i++ ) {
5 t2 j6 e# B* a- d! ~* Becho "这是第".$i."次循环<br>" ;
: O. ?( ~8 J8 r% }" }; a! p9 d- ]! G} % ]- c1 d1 Y8 ^. X
?> " E" x+ I6 S( d J
6 B. Q4 Z3 x9 Q# c! Z3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。0 a P2 Q0 X. p( r) J" H! r
语法如下:
4 y* X+ p; \! {( x: j9 Lswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } . `6 C l2 v/ B0 [# W
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 2 G: ^% s. z. [. C( ?, f1 T) W, J% d {
& l1 T/ `8 O T<?php & Q! A+ B! z+ {, P* p% Z
switch ( date ( "D" )) { # F. G7 L4 p$ w( o
case "Mon" : # R6 R+ O' Y3 p, }" A
echo "今天星期一" ;
; `; I- }4 j! G; wbreak;
/ e0 p, z4 H2 l1 l3 E2 g; Gcase "Tue" :
/ |; K# T6 x1 w+ c- `; eecho "今天星期二" ;
2 N0 O5 e V0 h7 U) cbreak;
) Q) w z3 e2 z4 m( ucase "Wed" :
) I2 G5 Q% `- U8 D/ c ?( uecho "今天星期三" ;
7 X" s4 O! k2 {+ Pbreak;
! s0 C- D6 m+ Tcase "Thu" : 3 ?5 ?6 ~/ [. ^7 a3 M
echo "今天星期四" ; , g" a( k4 v! M
break; 3 l4 ^- T" \- N6 m
case "Fri" : : R" [) k0 b1 [
echo "今天星期五" ;
5 T) ?2 g6 {/ W6 w7 xbreak;
- l! E7 [$ Y3 C3 ~: z/ h! R+ }default:
6 A4 g6 J( N g. B/ Y/ Hecho "今天放假" ;
k ?' M+ G9 t" ]$ ]break; y' Y3 ]/ k+ ~' b/ S; J* R
}
+ I9 H; \: \+ ^4 B* [( a?> " L% I9 ?5 o; k8 @( d# c" J& o
这里需要注意的是break;别遗漏了,default,省略是可以的。
1 k6 Z* e7 `, j) P很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。0 \$ m- x( Q+ ^" m, Z
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |