php的流程控制
* ]$ G) h: h. m3 L
c) ^1 [& `$ e) j7 d/ S! C1、if……else 循环有三种结构
9 T* e: N- L) Y* d5 {+ p) o! d) g第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: . O4 D4 y' F0 a- C- m/ }
, H) V6 C; }8 Y hif (a) { statement } " H, j0 h1 O, o
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。3 x% N& v/ p/ y( h: o
范例:本例省略大括号。
0 q2 l; P( g4 z, B1 U& i4 ?; ~) ~, ?" k
<?php ( L# r5 H4 k% T1 p- {! {8 |
if ($a==1) echo "我爱php" ;
; j/ S" }. m% ?" V) B" @; M7 `?> ; d: Y2 G9 H* K0 N7 P8 M8 @
2 g( D, K) v7 ?# j+ {这里特别注意的是,判断是否相等是==而不是=。
. Q2 S3 Q: o) c( l范例:本例的执行部分有三行,不可省略大括号。 ' H9 [7 S2 x7 y) r0 W
- ]1 C) y1 i j: y* J- _# f/ b<?php
) O/ p( v: S" m9 G# Uif ($a==1) { : }( f2 Q; t" E7 x y
echo "我爱php" ; 5 e+ x) }1 Q4 Q" M+ p) v
echo "<br>" ;
0 w1 b) \4 H, Z4 ]+ o: S9 D} 2 H" k3 B' A9 R0 _8 m9 h" m
?> 1 S5 I) K% G) R7 n/ J# n
% z6 D) y2 t" @* E
第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: " i' I. e3 W! ^& _% Y$ d# k
7 U+ H n! G" _
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
2 n. j# |* A) i/ `! o<?php
, M1 c5 F7 E7 N- \- p1 Kif ($a==1) { " W, L; ]& l; ^7 l% x
echo "我爱php1";
2 A2 A9 Z9 \% _7 secho "<br>";! U& F+ [& a# B* w4 z
} 4 Z( Z: f6 l4 y
else {' N# O$ P, D: X2 V+ S1 ]
echo "我爱php2";
+ B! j C- E0 \. G. j7 ?echo "<br>";
" E) H9 S7 t1 _0 W4 n4 {3 P9 |} , }0 i N' W5 A; a( [
?>
- R7 G; k4 |9 _- j6 f7 N/ w
* A u, I: G6 R第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。, A! n0 }; m5 X! S
直接看下面的例子
, q5 k3 w& @' @<?php B" A9 S6 l0 Y1 E+ V: O
if ( $a > $b ) {
1 E4 n7 X9 S L5 V* a2 j6 vecho "a 比 b 大" ;
$ ~1 l8 Z1 Y; s) n} elseif ( $a == $b ) { 0 }. z6 t: r& |: M5 @
echo "a 等于 b" ;
8 e. z$ w# ~( F( u} else {
2 c( v6 W1 q8 n& J5 s/ a2 v( Necho "a 比 b 小" ;
1 ?( q" W7 g" G1 {, a8 z}
]( G/ w6 r" Q5 n2 p?>
1 c( Z3 \" d/ P3 v; f+ G/ I, D
, p1 ~ L2 C e9 K% V+ p2、for循环就单纯只有一种,没有变化,它的语法如下
# d: \- `# b( Z: V0 \# N5 c- _4 m. O7 g& h9 l
for (a; b; c) { statement }
0 }, ]; w' d N# e3 a其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
. J6 c) k' z, \/ o& V0 t" p& r下例是用 for 循环写的的例子。 ' Y* h+ S4 ~4 ^; J0 E9 I
<?php + q" r( ^) ]# `2 A
for ( $i = 1 ; $i <= 10 ; $i++ ) { 7 k K0 j3 k, y) |+ @4 ~
echo "这是第".$i."次循环<br>" ;
) N# Q5 ~' y( x. [3 C4 D8 c% O& ?} & c$ X( n: S0 s& B
?> : f H2 V0 b- W4 h* U' l/ F7 L
" u$ a+ W5 I" Y7 \; J# C u3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。6 \7 I% ^2 y7 E, |* D
语法如下:
( m q+ N! \, B! C8 ~; [+ eswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } % [+ w! s! x# ^2 R: X! a
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 8 q( C1 I1 o7 b9 d) r; @
' i4 u2 b4 N3 [) a2 [6 i h" h$ @<?php
$ w% r+ R T% s/ Y4 L9 Bswitch ( date ( "D" )) {
, D* `6 n, @# Xcase "Mon" :
' @; T8 n: Y: ]) g: |3 hecho "今天星期一" ; " P. Y7 I9 b4 T4 f# C" @
break;
, `1 Q/ {, t7 b! |2 t \/ n( pcase "Tue" :
6 s9 B& a" ?6 Q' c2 G3 {5 aecho "今天星期二" ;
6 a7 _! m+ P, o5 hbreak;
! h6 X4 L& p, T- M& Zcase "Wed" :
: H( m( C5 T- O9 l) p* K' O" ?echo "今天星期三" ; 0 Z1 M2 J+ K- X' N3 V
break; 5 ^. x$ ~2 t, D3 n+ ~; z7 B
case "Thu" : 4 x) y/ E$ F8 G. p% v o
echo "今天星期四" ; 0 c% [% ~) O1 a7 D
break; 1 L. K0 W0 Q$ h, G' I
case "Fri" : & C& c0 J2 {4 @1 u- Z1 [) ^4 Y
echo "今天星期五" ; ; u2 a6 r, V$ z; w7 _, o4 R: z7 k
break; / a2 w, I5 m& B$ ?) Z( L; S
default:
. D' Z& S8 F* ?" j$ ?$ v3 s/ d3 A9 l" yecho "今天放假" ;
; d5 v2 g7 I0 abreak; ' P5 N+ e: M# t
} " D) P. F) ^4 _& N
?> ; O+ x2 Q+ m. p
这里需要注意的是break;别遗漏了,default,省略是可以的。
8 J) s, e1 F" R, K* p7 [2 Z很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。8 p& c# p: ]+ K: [$ u
十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |