php的流程控制 ) C8 R: y# y, d7 U! ?0 P( ^! d
; F$ B2 ~/ \9 R& z7 L6 ~
1、if……else 循环有三种结构8 q; B! V q7 R5 B0 p5 A x. r8 U
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: 4 C8 q4 y0 Q1 Z, w8 {1 N
% D2 e: }0 U+ b7 W
if (a) { statement }
( U6 V- J% ~, x3 l. I, C其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。, F4 p1 ~# o2 V; q r
范例:本例省略大括号。
6 L: h; J$ l+ k' \
3 |/ l! d% t7 F# }<?php + O* r6 T0 W$ f( h: Z( f
if ($a==1) echo "我爱php" ;
. p+ }$ H7 R& A) y& N?> 9 R4 h0 |. r7 ?% c. Q
$ u2 w/ i& w2 F) ^这里特别注意的是,判断是否相等是==而不是=。$ T- r0 n! G4 a1 Y4 u
范例:本例的执行部分有三行,不可省略大括号。 $ k; v9 v4 m0 { B( v
6 [6 d& m2 _! \
<?php
4 h6 K5 H3 s, Eif ($a==1) { " s# ]9 U* f4 p( \' i
echo "我爱php" ; ) v. s/ O4 I7 H) K
echo "<br>" ; * a, o. y5 q1 o9 x6 V& t. H2 ]* z
}
, A6 ]( g6 N9 G/ W6 d# O0 a0 e?> - X0 B9 z' T+ |1 q% d8 c* J# t
/ H6 H" J1 M4 a6 {: h, D* S
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下:
# y% U" z( l0 g- u* z4 j# q
$ M6 K5 H/ C* Y. y& g3 [1 a7 lif (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 : D( P7 f _$ ]
<?php 5 x# ^( H6 R! {: g
if ($a==1) {
! T' e% n( ]! a0 |& z" mecho "我爱php1"; - `6 k; A6 c4 Q4 t
echo "<br>";5 ~4 i( R D8 _5 j% n
} [+ E' E# G: [ V: x' Z* ]$ F
else {. X, _- k1 ~! a, z$ f& t# v
echo "我爱php2";
- d0 X: Y0 ?- Z f* oecho "<br>"; 5 n; I( r8 r+ X3 c
} O6 u& a7 j$ Y: a6 Y
?> , Z: q) u( l3 Z4 N4 M7 u
6 I6 Y' j$ {+ r# X7 M
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。
5 I: ]4 H9 ^: _: F9 q直接看下面的例子
+ t2 K. f) U# x, b B( x! s<?php
$ W4 P- d3 S0 Q+ W) Aif ( $a > $b ) { ; V1 h* H! ~- \2 u: O- C& N3 _9 C
echo "a 比 b 大" ; ) o+ n# y" T$ l+ k e8 T
} elseif ( $a == $b ) { ) O, }$ k5 Q5 j" l4 _- R
echo "a 等于 b" ; + ^3 Q5 @( H! V# @, p$ X
} else { ' p% Y% I9 N" f( @3 O! C/ B
echo "a 比 b 小" ;
+ t: P- ]( S5 M" l1 _4 Y T) R0 a} % s- q/ s0 B, E* k
?> 4 z9 L9 r+ t0 \% h& @- T$ F; A
% C0 ^. X, Z/ b( M2、for循环就单纯只有一种,没有变化,它的语法如下 ) o) m) k( B. e& Q8 o
- v3 w7 }6 t: Sfor (a; b; c) { statement }
* o6 W5 B7 ^& R' W4 X4 a Y- _: \2 K其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。& p) ^0 N$ V0 d
下例是用 for 循环写的的例子。 9 o9 L Y, p/ Z3 D, h" c
<?php
& F' ~, n8 r" g2 F! jfor ( $i = 1 ; $i <= 10 ; $i++ ) {
# j# T. M$ }$ ^+ B% q, iecho "这是第".$i."次循环<br>" ;
! a I; K S4 `' c2 D, q) i1 O; ^} + ~1 H$ a1 F: C. k5 P. o
?>
4 _( T: g8 Y" A$ d8 t+ z* C E
' E! Z2 p( Z% t6 L$ W( F6 L3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。0 F9 e! o/ C/ h, @! I
语法如下:
' @( {& g5 c% G+ R- \( A8 _switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } ' f: N: e9 F- G' n# B
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 + Y" Z3 y7 |! ~5 X( R
1 h, `! V( T: C e# _
<?php ' _) ?) W/ O3 D5 {, s6 ]
switch ( date ( "D" )) {
' [- M0 b6 c; ~# b" _* V6 a; zcase "Mon" :
, r7 R$ o7 d7 L9 s( n* p. Oecho "今天星期一" ; 2 T, i6 B2 n2 L, L: [2 Z
break; ( \; W8 w# ^' v+ `! N: k
case "Tue" :
# g/ T/ D# ^, ^# v, |% jecho "今天星期二" ; 6 I& t% L+ p+ z4 l# d# e1 H
break; % L) L9 ?" g \ g5 ]
case "Wed" :
7 ~1 [# S* D/ b6 decho "今天星期三" ;
1 U8 ^1 c4 K- Z% f4 ?" A+ qbreak;
1 Q$ O2 F7 z2 |# mcase "Thu" : " j5 B+ k7 \' Y' j2 c6 i! ?) j
echo "今天星期四" ; ; g3 E9 t- I" ?) t: s2 |- F. O
break;
; x a( O9 _0 o. Y/ @3 G9 Qcase "Fri" :
0 {3 }2 X1 H* E9 t9 t, |echo "今天星期五" ;
0 p* T& P6 R9 W Zbreak;
# t0 z8 W7 x7 B4 ^default:
: @' `) l0 x+ |! B( |echo "今天放假" ;
5 V8 M; Z U$ z2 }: C8 lbreak;
9 \7 T; P' H' I9 _ ?6 O7 H: ^}
+ s4 l: {! @$ p; G5 L r6 z3 b/ `?> 2 A1 J; n! ]! j8 d
这里需要注意的是break;别遗漏了,default,省略是可以的。% {* w+ O9 M/ F1 O
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。3 @+ N5 C* n5 \/ @) _8 s6 I8 }+ P
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |