php的流程控制 / X4 i! E' p- P6 b. V& ]
: d! d9 ?- E* s5 y
1、if……else 循环有三种结构3 M) N9 {$ I8 @; K( F, u3 @9 B
第一种:只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
# ?0 N0 d/ z8 y; U# u! X+ |0 l3 C9 H# l( o9 l C! v& p) R
if (a) { statement }
( q) h5 l& {5 Y$ R其中的 a 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
6 k W8 u0 Q" T/ m8 C# Y' M) c: m, r范例:本例省略大括号。
' K$ t; O4 B/ p. F. j; k3 p
: x! [& K: U- ?9 u5 H6 ~6 e9 N<?php
$ {: ~9 T& O, K7 k; j8 T* ]* }if ($a==1) echo "我爱php" ; # x7 O" j# Z3 v3 C+ T
?>
/ e4 ~6 o) s* \- K* m4 m: ^# l z7 K+ I, X2 K
这里特别注意的是,判断是否相等是==而不是=。' }) K* l( g4 s& U8 C
范例:本例的执行部分有三行,不可省略大括号。
9 l) r! f3 }3 T- i; t" l0 h4 p- H/ b1 T, [ d0 O5 I) i
<?php ; h$ O; i% j; n! ^8 C. g
if ($a==1) {
# @) E. t+ A4 R' wecho "我爱php" ; ! ]) Y9 y9 F( G9 ]' t M! }+ J/ g
echo "<br>" ; 9 C0 g) u6 B- n6 F& o) l
}
, @, z2 F* Q; o, p" z?>
0 {# X" s2 z8 \! D* ]
* w9 h& T5 b# \7 t3 r第二种:除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下: * a; r9 C# r, M( e z
: G% h) b( [( z% M! G8 E7 v
if (a) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
" g5 Q k1 ~( o) I) l. v- _( i: x+ V<?php 1 O2 j& Q% x/ n& m5 A+ M
if ($a==1) { ( s+ ^0 T' A0 z, m A3 c2 E
echo "我爱php1"; 8 R- ? v/ e! m8 l
echo "<br>";+ w$ ~2 y2 p4 @! }, d" K4 J
}
) j" ^. c; ~7 Y d: K" n6 ~else {" e& f) h! I# S+ K7 u
echo "我爱php2";* Y: p# s( s( L4 U$ E/ o; w
echo "<br>"; ' C3 x ~7 b( \; x9 y
}
+ d5 d. N4 I) A* t2 q?>
" _% Q1 @1 z6 R6 r9 c) w- H( j9 O5 Y* s9 ~) U4 b E0 `3 F1 p2 p
第三种:是递归的 if……elseif……else 循环,通常用在多种决策判断时。它将几个 if……else 拿来合并运用处理。3 |5 l& w; }) y" Z
直接看下面的例子 - t1 j1 f- D4 F
<?php
* r" j5 s4 b a3 qif ( $a > $b ) { ; R6 o! X* W$ A! a4 p
echo "a 比 b 大" ;
" ~; S" |* h% v9 d} elseif ( $a == $b ) {
% {( t2 f {0 z Hecho "a 等于 b" ;
3 x6 r/ C2 Z6 d3 ^9 l} else {
2 g- f7 b! }3 c1 A, N- Fecho "a 比 b 小" ; % V2 \ A! N& X' |; K; y P
} ' \% u5 o8 g8 M
?> ; z+ x3 f# f1 Y d6 |$ x( {
& G! j. f/ ]' M3 `6 E2 |2、for循环就单纯只有一种,没有变化,它的语法如下
3 u, C* F) ^# C; P6 p! q, D
4 @$ R" i3 _/ X1 ]+ y& d2 ifor (a; b; c) { statement }
4 j& W$ ~- M8 k- J其中的 a 为条件的初始值。b 为判断的条件,通常都是用逻辑运算符号当判断的条件。c 为执行statement 后要执行的部份,用来改变条件,供下次的循环判断。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。! @2 _- d+ t4 O* X% m
下例是用 for 循环写的的例子。 2 z' w7 c0 d9 L; a* {0 v0 C( R
<?php # |- x" Z @' y$ S/ S; Q. r8 ^( O
for ( $i = 1 ; $i <= 10 ; $i++ ) {
4 K! O$ F l; v4 i }* X) Necho "这是第".$i."次循环<br>" ;
4 L D7 }! [2 B}
7 ^: D% C0 u& i& a, s* v5 y5 i?> + \& _8 F9 K |. Z
6 c3 q$ ]6 C( {1 r0 A3、switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。* t1 y4 Q, o6 S# a) }8 J' D
语法如下:1 T' a' `* f8 L! B: w. e4 W+ m
switch (a) { case 1: statement1; break; case 2: statement2; break; default: statementn; break; } , S7 h- {9 e L; `4 t; H
其中的 a 条件,通常为变量名称。而 case 后的通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 2 v( @- T+ H$ } z
5 F- m7 a: t# O9 T% u<?php
/ a, V2 H( L# Q" S H4 P* I& j2 P% cswitch ( date ( "D" )) {
0 U2 O+ q$ E4 Kcase "Mon" : ! d) S4 P0 D7 }% _# q4 s
echo "今天星期一" ;
5 }6 h4 q- I4 u1 _ Qbreak; % q9 S& _- e5 O& K( b' m5 p
case "Tue" : 9 H6 ?; Z* A: Z7 E- l9 g7 y+ W
echo "今天星期二" ; 3 r# v: g* t J( m+ e$ A! X+ D: e: R
break; ' n K/ \2 g$ {7 @: k
case "Wed" : 2 ~) x6 A% h& v
echo "今天星期三" ; 7 W. G# |0 O% @5 j$ {
break; ( ?) `6 l- S2 U$ n% G% a$ R- M+ P3 e
case "Thu" : . _7 K9 Y0 t I2 @5 k# `
echo "今天星期四" ;
5 L+ X" I6 X! t1 |break;
. u6 ?- |# p$ M) A) ?4 gcase "Fri" : / F6 \$ }' ?+ S7 k! p" H
echo "今天星期五" ; " M0 I4 `/ V) y- ~4 k" ^
break; . ]+ r2 c) s. j$ i# c+ M
default:
' J) f2 G' N( gecho "今天放假" ;
/ H; J8 N7 h/ v# [9 n1 ?break;
# w0 E9 y! b! i, d( S}
( u/ m0 o) P! t6 y?>
' ^. B$ [& w: P/ S5 n! A4 w/ x这里需要注意的是break;别遗漏了,default,省略是可以的。
2 _/ L4 B* b# V# x$ d; ^/ n很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
( E4 e5 A. \7 @% b9 d+ u/ B7 {, N十天学会php之第二天就说到这里,第三天开始说数据库的使用。 |