顺序控制流程
顺序就是自动的,不加任何控制的流程,从上到下执行
if else选择
代码示例
复制代码
1
2
3
4
5
6
7
8if ( $a > $b ) { echo "a is bigger than b" ; } elseif ( $a == $b ) { echo "a is equal to b" ; } else { echo "a is smaller than b" ; }
流程图
switch 语句
使用细节
- 当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句
- 直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段
- 一个 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情况
- case 表达式可以是任何求值为简单类型的表达式,即整型或浮点数以及字符串,甚至可以是运算,是个函数调用
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$i = 2; function test($n1,$n2){ return $n1 + $n2; } switch ($i){ case 1: echo '今天星期一,猴子穿新衣'; break; case test(1,1): echo '今天星期二,猴子当小二'; break; default: echo '不会编了~'; }
switch测试题
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32// 不会编了~ 今天星期一,猴子穿新衣 // 1. 匹配case1 false 2.匹配case2 false case都未匹配到 需要找default 3.匹配default true,且无break继续向下打印直到遇到break结束. $i = 5; switch ($i){ default: echo '不会编了~'; //break; case 1: echo '今天星期一,猴子穿新衣'; break; case 2: echo '今天星期二,猴子当小二'; break; } // 今天星期二,猴子当小二 // 1. 匹配case1 false 2.匹配case2 true break结束 $j = 2; switch ($j){ default: echo '不会编了~'; //break; case 1: echo '今天星期一,猴子穿新衣'; break; case 2: echo '今天星期二,猴子当小二'; break; }
循环 for while
for循环
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16for ( $i = 1 ; $i <= 10 ; $i ++) { echo $i ; } // 其他写法 for ($i = 0;$i<10;){ echo $i; $i++; } $i = 0; for (;$i<10;){ echo $i; $i++; }
while循环
复制代码
1
2
3
4
5
6$i = 0; while ($i<10){ echo $i; $i++; }
do…while循环
复制代码
1
2
3
4
5
6
7// do...while 至少执行一次 $i = 0; do{ echo $i; $i ++; }while($i<10);
流程图
流程控制的替代语法
- PHP 提供了一些流程控制的替代语法,包括
if
,while
,for
,foreach
和switch
- 替代语法的基本形式是把左花括号
{
换成冒号:
,把右花括号}
分别换成endif;
,endwhile;
,endfor;
,endforeach;
endswitch;
ifelse比较大小
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17$a = rand(1,10); $b = rand(1,10); include './121.php'; /* html中流程控制语法 <body> <?php if ($a > $b):?> <h1>a is bigger than b</h1> <?php elseif ($a == $b):?> <h1>a is equal to b</h1> <?php else:?> <h1>a is smaller than b</h1> <?php endif;?> </body> */ */
foreach打印水浒英雄表格
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19$arr = array('a'=>array('宋江','男','及时雨'), 'b'=>array('鲁智深','男','花和尚'), 'c'=>array('林冲','男','豹子头')); include '../html.html'; /* <table> <tr> <th>姓名</th> <th>性别</th> <th>外号</th> </tr> <?php foreach($arr as $key=>$value):?> <tr> <?php foreach($arr[$key] as $v):?> <td><?php echo $v; ?></td> <?php endforeach; ?> </tr> <?php endforeach; ?> </table> */
break
- break 结束当前 for,foreach,while,do-while 或者 switch 结构的执行
- break 可以接受一个可选的数字参数来决定跳出几重循环
break基本用法
复制代码
1
2
3
4
5
6
7
8
9
10$n = 1; while (1){ $a = rand(1,1000); if ($a == 99){ echo $n; break; } $n++; }
break结束第n层循环
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 注意分析执行流程 $i = 0; while (true){ switch ($i++) { case 3: echo 'quit at 3'; break; case 5: echo 'quit at 5'; break 2; default: break; } } // quit at 3 quit at 5
continue
- continue 在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环
- continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1,即跳到当前循环末尾
continue基本用法
复制代码
1
2
3
4
5
6
7
8
9for ($i=0; $i<2; $i++){ for ($j=0;$j<4;$j++){ if ($j == 2){ continue; } echo '$i='.$i.'$j='.$j.'<br>'; } }
分析图
遇到难的逻辑运算 会画图分析
continue跳出第n层循环
复制代码
1
2
3
4
5
6
7
8
9for ($i=0; $i<2; $i++){ for ($j=0;$j<4;$j++){ if ($j == 2){ continue 2; } echo '$i='.$i.'$j='.$j.'<br>'; } }
goto
- goto 操作符可以用来跳转到程序中的另一位置
- 该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记
- PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域
- goto无法跳出一个函数或类方法,也无法跳入到另一个函数或任何循环或switch 结构中
- goto可以跳出循环或者switch,通常的用法是用 goto 代替多层的 break
简单示例
复制代码
1
2
3
4
5
6goto a ; echo 'Foo' ; // 这句代码被跳过 a : echo 'Bar' ; // Bar
goto 跳出循环示例
复制代码
1
2
3
4
5
6
7
8
9
10
11for( $i=0, $j=50 ; $i<100 ; $i++) { while($j--) { if($j == 17) { goto end ; // 当while循环到$j==17时, goto执行直接跳出了for循环 } } } end : echo "i = $i" ; echo "j = $j" ;
循环练习题
打印空心金字塔
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75<?php /* ▲ ▲▲ ▲▲▲ */ for ($i=1; $i<5; $i++){ for ($j = 0;$j < $i;$j++){ echo '▲'; } echo '<br>'; } /* ▲ => 第1层 有1 (2*(层数-1)+1)个 ▲▲▲ => 第2层 有3 (2*(层数-1)+1)个 ▲▲▲▲▲ => 第3层 有5 (2*(层数-1)+1)个 */ for ($i = 1; $i <= 5; $i++){ for ($j=1; $j<=2*($i-1)+1; $j++){ echo '▲'; } echo '<br>'; } /* ▲ => 第1层 有2 (层数-当前层数)个空格 ▲▲▲ => 第2层 有1 (层数-当前层数)个空格 ▲▲▲▲▲ => 第3层 有0 (层数-当前层数)个空格 */ $n = 5; for ($i = 1; $i<=$n; $i++){ // 打印空格 for ($k=1; $k<=$n-$i; $k++){ echo '▼'; } for ($j=1; $j<=2*($i-1)+1; $j++){ echo '▲'; } echo '<br>'; } echo '<hr>'; /* ▲ ▲*▲ ▲***▲ ▲▲▲▲▲▲▲ */ $n = 5; for ($i = 1; $i<=$n; $i++){ $num = 1; for ($k=1; $k<=$n-$i; $k++){ echo '▼'; } for ($j=1; $j<=2*($i-1)+1; $j++){ if ($i>1 && $i<$n){ if ($num>1 && $num<2*($i-1)+1){ echo '▼'; }else{ echo '▲'; } }else{ echo '▲'; } $num++; } echo '<br>'; }
最后
以上就是平常书包最近收集整理的关于php基础——流程控制的全部内容,更多相关php基础——流程控制内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复