一 、三大流程控制
任何一门编程语言, 都会有三种流程控制: “顺序”, “分支”, “循环”
- 顺序: 是最基本的执行流程, 执行顺序与源码的书写顺序一致
- 分支: 是程序具有人工智能最重要的工具, 可根据预置条件判断代码片断是否需要执行
- 循环: 是计算机最擅长的领域, 计算机从开机到关机循环无处不在,整个程序就是一个循环
二 、流程控制之分支判断
1.单分支流程控制( if
)
- 分支控制,就是代码中多了判断,根据真假控制执行语句;
代码示例:
<?php
// 流程控制之分支判断
// 单分支
$count = 10;
// 单价
$price = 50;
// 数量
$total = 0;
// 金额
$discount = 1;
//折扣率
// 大于10件,9折
if ($count >= 10 && $count < 20):
// 大于10件小于20件,9折
$discount = 0.9;
endif;
//总金额=单价*数量*折扣率;
$total = $count * $price * $discount;
echo "购买数量: $count , 总金额: $total, 折扣率: $discount <hr>";
图片示例:
2.双分支流程控制( if - else
)
代码示例:
<?php
// 流程控制之分支判断
// 双分支
$count = 10;
// 单价
$price = 50;
// 数量
$total = 0;
// 金额
$discount = 1;
//折扣率
// 大于10件,9折
if ($count >= 10 && $count < 20):
// 大于10件小于20件,9折
$discount = 0.8;
else:
$discount = 1;
endif;
$total = $count * $price * $discount;
echo "购买数量: $count , 总金额: $total, 折扣率: $discount <hr>";
图片示例:
3.多分支流程控制( if - elseif - else
)
代码示例:
<?php
// 流程控制之分支判断
// 多分支
$count = 35;
$price = 1;
$discount = 1;
if ($count >= 10 && $count < 20) {
// 当$count大于或等于10小于20时将打9折
$discount = 0.9;
} elseif ($count >= 20 && $count < 30) {
// 当$count大于或等于20小于30时将打8折
$discount = 0.8;
} elseif ($count >= 30) {
// 当$count大于30时将打7折
$discount = 0.7;
} else {
// 未达到金额要求时,默认不打折
$discount = 1;
}
$total = $count * $price * $discount;
echo "购买数量: $count , 总金额: $total, 折扣率: $discount <hr>";
图片示例:
4.多分支流程控制简化方案(采用switch表达式,switch - case - break
)
代码示例:
<?php
// 流程控制之分支判断
// 多分支
$count = 35;
$price = 1;
$discount = 1;
switch (true) {
case $count >= 10 && $count < 20:
$discount = 0.9;
break;
case $count >= 20 && $count < 30:
$discount = 0.8;
break;
case $count >= 30:
$discount = 0.7;
break;
default:
$discount = 1;
}
$total = $count * $price * $discount;
echo "购买数量: $count , 总金额: $total, 折扣率: $discount <hr>";
图片示例:
三 、 流程控制之循环
注释:
while
: 入口判断( 必须将循环变量初始化操作放在while循环外部)do - while
: 出口判断for
: 计数式foreach
: 遍历数组
1.入口判断:while
代码示例:
<?php
// 流程控制之循环
// while() 根据循环条件的判断时机有二种形式,入口判断 和出口判断
// 必须将循环变量初始化操作放在while循环外部
$moblie = ['iphone', 'huawei', 'samsung', 'vivo', 'oppo'];
$i = 0;
$result = '';
while ($i < count($moblie)) {
$result = $moblie[$i];
// 循环体内必须要有循环变量的更新语句, 否则会进入死循环
$i++;
}
echo rtrim($result, ', ') . '<br>';
图片示例:
2.出口判断:do - while
代码示例:
$moblie = ['iphone', 'huawei', 'samsung', 'vivo', 'oppo'];
$i = 0;
$result = '';
do {
$result = $moblie[$i];
// 循环体内必须要有循环变量的更新语句, 否则会进入死循环
$i++;
} while ($i > count($moblie));
// 出口判断, 不论条件是否成立, 至少会执行一遍循环体, 循环条件显然不成立, 但仍会输出第一个元素
echo rtrim($result, ', ') . '<br>';
图片示例:
3.计数型循环:for
代码示例:
<?php
// 流程控制之循环
//语法: for(循环变量初始化; 循环条件; 更新循环条件) {循环语句}
$mobile = ['iphone', 'huawei', 'samsung', 'vivo', 'oppo'];
$result = '';
for ($i = 0; $i < count($mobile); $i++) {
$result =$mobile[$i];
}
//
echo rtrim($result, ', ') . '<br>';
图片示例:
4.使用for ( )循环遍历索引数组
代码示例:
<?php
// 流程控制之循环
$name = ['id'=> 34, 'username'=>'连衣裙', 'price'=> 1122];
// 用for()循环遍历索引数组, 效果与foreach()是一样的
foreach ($name as $key => $value) {
echo "$key => $value <br>";
}
图片示例:
总结
- 运算符的使用方法:‘太空船运算符’、‘逻辑运算符’、‘或与运算符’以及‘三元运算符’
- 三元运算和 if 简化版提高了代码的简洁性
- 模板语法也在一定程度上提高了代码的简介性
- 循环必须得更新循环语句负责会死循环
- 可以用for() , while() 循环, 用来遍布数组