php的流程控制 # i# z) |/ O4 Q$ ?& n
: U/ R: u/ P6 G, ^1 z5 E1、if……else 循环有三种结构
4 \0 k$ ~% K0 l2 p( q5 F第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
. I1 n, J c* d8 U, Z, z7 S7 @- n2 Z1 p d: P; `( i. `& U+ h- L. e/ f
if (a) { statement } N/ M5 Y7 q) g, c; q8 O6 V
其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。; y7 Q$ x, l% B# k" [, t" G/ S
范例:本例省略大括号。
. r- v# t w5 S R2 G# l# I3 `5 m& l7 t
<?php
$ P4 p# f/ X2 y4 _) G, `& Lif ($a==1) echo "我爱php" ;
5 \* t. G* l0 z) Q?> ' u( h. I4 X& N, h \
5 x4 W; X2 U5 ?$ p- a' H6 q- Q2 M
这里特别注意的是,判断是否相等是==而不是=。6 a1 s K, S) f, `5 I
范例:本例的执行部分有三行,不可省略大括号。
( ]% ] P* w9 l8 j
! K( s/ x9 e7 d. v8 `! J<?php
% T. M* H# m x3 R, iif ($a==1) { 3 y1 K4 b% D; F) i( O
echo "我爱php" ; ' ^4 V& I$ W5 z' g5 Y; v
echo "<br>" ;
/ J, J4 |' S- `' }$ t* r- k}
: n% y+ r [9 U?> : x3 T- z( j- v# p) T- |/ X7 T3 _ H0 T
( T* U G3 |# W" h第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: / |) p- l) R+ @$ X
! q+ ?: A9 R3 i& ^if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 1 Y6 c) _" s ^2 i& }% w3 i
<?php ( s; e2 p+ L0 o1 U, ~3 C ~
if ($a==1) { . y: Y: A$ s% `6 g6 x5 F! a
echo "我爱php1";
" u2 B5 Z3 t! `( I0 U9 c, c! @echo "<br>";$ K' j. }* l; {# O% r. C
} 0 {9 ]3 P) K, O' G6 G
else {
9 Y: g4 G& b0 D8 c! _echo "我爱php2";6 \ g ~0 ^& K, \: S' h% D! c- \
echo "<br>";
( f. R) N0 G. ~9 B3 _/ o" v}
! t$ t; }# [& ?9 y, |% `5 X?> # c% n9 \* Y( E" E7 f$ a
, Q. T- X* G/ a( G: E
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。8 ^! L: |; ?; [6 ?0 i7 o# S" h
直接看下面的例子
# _% Q. v9 d/ f( K2 X% K4 m7 s) W<?php 6 n+ m# d% @$ X3 Q5 _7 P7 A+ m
if ( $a > $b ) {
3 v! `' Q& w7 _) m5 s! x; v8 z- lecho "a 比 b 大" ;
% L9 A, ?9 [( Y# s+ ] r7 H- j. U} elseif ( $a == $b ) {
6 a9 E; k7 j+ C3 H0 \1 secho "a 等于 b" ;
' h! `& n+ ?6 _" ?+ L. ]} else {
c. a5 |) V6 p- Y( x. I {echo "a 比 b 小" ;
1 H- g+ h# x& G1 E} ) ^$ ?! }4 r- L* q% w6 [
?> * j* D' L0 R8 F3 T( N0 E
( ^9 O+ d \& V) G7 }2、for循环就单纯只有一种,没有变化,它的语法如下 6 E. q8 S: x/ v# z, ?3 k8 Z
8 m" q1 q* g" ?, ?9 ]1 o
for (a; b; c) { statement }
. {1 v$ P# Q# f9 H其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
, G2 G* i# r" ], [4 Q* _下例是用 for 循环写的的例子。 / X& m% ~+ d* p+ _; F/ n: Q3 N
<?php ) d. H; D' Q1 _. P0 N
for ( $i = 1 ; $i <= 10 ; $i++ ) {
$ _& Y; I) Y( N; Jecho "这是第".$i."次循环<br>" ;
9 n( F. @* k0 |. {) f7 v. p% [3 J} 4 I% s# } q% ~# u. _9 e7 |
?>
& q4 G6 X d8 S. K$ S- c. U1 t9 C7 [6 {; J& ^4 H/ P1 q* Z1 _; t) m
3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
! b' \3 g$ o" R1 T! g语法如下:
) N) [# x% X- [ a0 [, K0 j* M/ lswitch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; }
5 {. N0 d4 o2 Z" @! }其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
; s: D7 [# @7 {- s3 S7 z. j$ \7 A; C
& p$ y4 P( J+ X<?php
4 j \) o% [& Eswitch ( date ( "D" )) {
+ |/ t$ B- i" V6 Q& z7 h) Hcase "Mon" :
, h" v1 l b9 S9 w3 e0 Cecho "今天星期一" ;
6 r0 m5 M6 H8 n, W$ ?' vbreak; % L. T9 A( L- @8 n
case "Tue" : 2 L5 e/ g$ |5 l* P( U. n
echo "今天星期二" ; ! I! W. L) J/ L( K
break; # \+ B6 U7 H& ~3 Y9 q* V
case "Wed" : $ w5 J L, Y8 O4 K8 Y! a3 p
echo "今天星期三" ; 8 f2 X u+ a* u' z
break; 6 j: q1 u) G' i9 o: w- W7 E8 M
case "Thu" : ' h; r& j7 ?" P, f' s
echo "今天星期四" ;
* U' Z9 `; F* o$ s( B7 k" z& ?# sbreak;
. L/ Z2 Z5 n* D' C; a) u$ @case "Fri" : 6 F* x& z" l7 t. p" Y; L) X S s
echo "今天星期五" ;
$ v+ v# }! [% f* B# `! {break; _. I l" s5 D6 q3 V1 | n
default: / C4 ~' t, ?' y
echo "今天放假" ;
4 X: R3 z# i. e9 ?break; 9 _% Q' Q& I% e& v- t: M# D4 B, w w
}
* a3 S4 a: f' b/ Y# [6 |: B?>
5 n5 _5 F/ ]/ T) N& A这里需要注意的是break;别遗漏了,default,省略是可以的。" h, P4 l M; r% j
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
6 Z; `% M7 I4 J9 N9 Y9 U3 J' G十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |