PHP控制结构:条件判断与循环迭代

好嘞,各位观众老爷们,欢迎来到我的PHP小课堂!今天咱们聊点啥呢?嗯,就聊聊PHP里那些“呼风唤雨”的控制结构——条件判断和循环迭代。这俩兄弟啊,一个负责“看人下菜碟”,一个负责“孜孜不倦地干活”,少了谁,你的代码都得撂挑子!准备好了吗?系好安全带,发车啦!🚂

开场白:代码世界的指挥棒

想象一下,你是个乐队指挥,面对着一大堆乐器,每个乐器都有自己的脾气和奏法。你总不能让它们一股脑儿地乱响吧?这时候,你就需要指挥棒,告诉它们什么时候该演奏,演奏什么。

在PHP的世界里,条件判断和循环迭代就相当于你的指挥棒。它们可以根据不同的情况,让你的代码按照你预定的计划执行,让程序不再是傻乎乎地从头跑到尾,而是懂得思考,懂得变通。

第一章:条件判断——“见人说人话,见鬼说鬼话”

条件判断,顾名思义,就是根据不同的条件,执行不同的代码。这就像我们平时说话,遇到不同的人,说不同的话一样。在PHP里,最常见的条件判断语句就是 if...else... 了。

1.1 if 语句:满足条件,就行动!

if 语句就像一个门卫,只有满足了他的条件,你才能进去。它的基本语法是这样的:

<?php
if (条件) {
  // 如果条件为真,就执行这里的代码
}
?>

举个例子,假设你是个网店老板,想给消费满100元的顾客打折:

<?php
$消费金额 = 120;

if ($消费金额 >= 100) {
  echo "恭喜你,消费满100元,享受九折优惠!🥳";
}
?>

这段代码的意思是:如果 $消费金额 大于等于 100,就输出 "恭喜你,消费满100元,享受九折优惠!🥳"。

是不是很简单?if 语句就像一个简单的开关,只有条件为真,才会打开开关,执行里面的代码。

1.2 if...else 语句:非此即彼,二选一!

if...else 语句就像一个岔路口,根据不同的条件,选择不同的道路。它的基本语法是这样的:

<?php
if (条件) {
  // 如果条件为真,就执行这里的代码
} else {
  // 如果条件为假,就执行这里的代码
}
?>

还是上面的例子,如果消费不满100元,就告诉顾客没有优惠:

<?php
$消费金额 = 80;

if ($消费金额 >= 100) {
  echo "恭喜你,消费满100元,享受九折优惠!🥳";
} else {
  echo "很遗憾,消费未满100元,暂无优惠哦!😭";
}
?>

这段代码的意思是:如果 $消费金额 大于等于 100,就输出 "恭喜你,消费满100元,享受九折优惠!🥳";否则,就输出 "很遗憾,消费未满100元,暂无优惠哦!😭"。

if...else 语句就像一个双向开关,要么打开这个,要么打开那个,两者只能选其一。

1.3 if...elseif...else 语句:多重选择,总有一个适合你!

if...elseif...else 语句就像一个多选题,根据不同的条件,选择不同的答案。它的基本语法是这样的:

<?php
if (条件1) {
  // 如果条件1为真,就执行这里的代码
} elseif (条件2) {
  // 如果条件2为真,就执行这里的代码
} else {
  // 如果以上条件都不为真,就执行这里的代码
}
?>

这次,我们根据不同的消费金额,给予不同的优惠:

<?php
$消费金额 = 150;

if ($消费金额 >= 200) {
  echo "恭喜你,消费满200元,享受八折优惠!🎉";
} elseif ($消费金额 >= 150) {
  echo "恭喜你,消费满150元,享受八五折优惠!🎁";
} elseif ($消费金额 >= 100) {
  echo "恭喜你,消费满100元,享受九折优惠!🥳";
} else {
  echo "很遗憾,消费未满100元,暂无优惠哦!😭";
}
?>

这段代码的意思是:

  • 如果 $消费金额 大于等于 200,就输出 "恭喜你,消费满200元,享受八折优惠!🎉";
  • 否则,如果 $消费金额 大于等于 150,就输出 "恭喜你,消费满150元,享受八五折优惠!🎁";
  • 否则,如果 $消费金额 大于等于 100,就输出 "恭喜你,消费满100元,享受九折优惠!🥳";
  • 否则,就输出 "很遗憾,消费未满100元,暂无优惠哦!😭"。

if...elseif...else 语句就像一个多层阶梯,根据不同的高度,选择不同的台阶。

1.4 switch 语句:精确匹配,效率更高!

switch 语句用于精确匹配某个变量的值,然后执行相应的代码。它的基本语法是这样的:

<?php
switch (变量) {
  case 值1:
    // 如果变量的值等于值1,就执行这里的代码
    break;
  case 值2:
    // 如果变量的值等于值2,就执行这里的代码
    break;
  default:
    // 如果变量的值不等于以上任何一个值,就执行这里的代码
    break;
}
?>

假设我们要根据用户选择的商品类型,显示不同的商品信息:

<?php
$商品类型 = "手机";

switch ($商品类型) {
  case "手机":
    echo "这里有最新的智能手机,快来看看吧!📱";
    break;
  case "电脑":
    echo "这里有各种型号的电脑,总有一款适合你!💻";
    break;
  case "平板":
    echo "这里有轻便易携带的平板电脑,随时随地娱乐办公!📱";
    break;
  default:
    echo "抱歉,暂无该类型商品!😥";
    break;
}
?>

这段代码的意思是:

  • 如果 $商品类型 等于 "手机",就输出 "这里有最新的智能手机,快来看看吧!📱";
  • 如果 $商品类型 等于 "电脑",就输出 "这里有各种型号的电脑,总有一款适合你!💻";
  • 如果 $商品类型 等于 "平板",就输出 "这里有轻便易携带的平板电脑,随时随地娱乐办公!📱";
  • 否则,就输出 "抱歉,暂无该类型商品!😥"。

注意: switch 语句里的 break 语句非常重要,它用于跳出 switch 语句,防止代码继续向下执行。如果没有 break 语句,代码会一直执行到 switch 语句的结尾,这可不是我们想要的!

表格总结:条件判断语句

语句 功能 适用场景
if 根据条件执行代码 只需要判断一个条件是否成立的情况
if...else 根据条件选择执行不同的代码 需要判断一个条件,并根据结果执行不同的代码的情况
if...elseif...else 根据多个条件选择执行不同的代码 需要判断多个条件,并根据不同的条件执行不同的代码的情况
switch 根据变量的值选择执行不同的代码 需要根据变量的值进行精确匹配,并执行相应代码的情况,特别适合有限且明确的选项。效率通常比 if...elseif...else 更好。

第二章:循环迭代——“重复的事情,交给机器做!”

循环迭代,就是让一段代码重复执行多次。这就像我们平时复制粘贴,重复做一件事情一样。在PHP里,常见的循环语句有 forwhiledo...whileforeach

2.1 for 循环:有计划,有步骤!

for 循环就像一个机器人,按照你设定的计划,一步一步地完成任务。它的基本语法是这样的:

<?php
for (初始化; 条件; 更新) {
  // 循环体,重复执行的代码
}
?>
  • 初始化: 在循环开始之前执行一次,用于初始化循环变量。
  • 条件: 每次循环开始之前都会判断条件是否为真,如果为真,就执行循环体;否则,就跳出循环。
  • 更新: 每次循环体执行完毕之后都会执行,用于更新循环变量。

举个例子,我们要输出 1 到 10 的数字:

<?php
for ($i = 1; $i <= 10; $i++) {
  echo $i . " ";
}
?>

这段代码的意思是:

  1. 初始化 $i 为 1;
  2. 判断 $i 是否小于等于 10,如果是,就执行循环体;
  3. 输出 $i 的值,并在后面加上一个空格;
  4. $i 的值加 1;
  5. 重复第 2 步,直到 $i 的值大于 10。

for 循环就像一个精确的计时器,可以控制循环的次数和步长。

2.2 while 循环:只要条件满足,就一直循环!

while 循环就像一个永动机,只要条件满足,就会一直循环下去,直到条件不再满足为止。它的基本语法是这样的:

<?php
while (条件) {
  // 循环体,重复执行的代码
}
?>

还是上面的例子,我们要输出 1 到 10 的数字:

<?php
$i = 1;
while ($i <= 10) {
  echo $i . " ";
  $i++;
}
?>

这段代码的意思是:

  1. 初始化 $i 为 1;
  2. 判断 $i 是否小于等于 10,如果是,就执行循环体;
  3. 输出 $i 的值,并在后面加上一个空格;
  4. $i 的值加 1;
  5. 重复第 2 步,直到 $i 的值大于 10。

while 循环就像一个不知疲倦的工人,只要有活干,就会一直干下去。

2.3 do...while 循环:至少执行一次!

do...while 循环和 while 循环很像,唯一的区别是,do...while 循环会先执行一次循环体,然后再判断条件是否为真。也就是说,do...while 循环至少会执行一次。它的基本语法是这样的:

<?php
do {
  // 循环体,重复执行的代码
} while (条件);
?>

还是上面的例子,我们要输出 1 到 10 的数字:

<?php
$i = 1;
do {
  echo $i . " ";
  $i++;
} while ($i <= 10);
?>

这段代码的意思是:

  1. 初始化 $i 为 1;
  2. 执行循环体,输出 $i 的值,并在后面加上一个空格;
  3. $i 的值加 1;
  4. 判断 $i 是否小于等于 10,如果是,就重复第 2 步,直到 $i 的值大于 10。

do...while 循环就像一个先斩后奏的将军,先执行命令,再汇报情况。

2.4 foreach 循环:遍历数组,得心应手!

foreach 循环专门用于遍历数组,它可以让你轻松地访问数组中的每一个元素。它的基本语法是这样的:

<?php
foreach (数组 as $键 => $值) {
  // 循环体,重复执行的代码
}
?>

或者:

<?php
foreach (数组 as $值) {
  // 循环体,重复执行的代码
}
?>

举个例子,我们要遍历一个包含商品信息的数组:

<?php
$商品列表 = array(
  "手机" => "最新的智能手机",
  "电脑" => "各种型号的电脑",
  "平板" => "轻便易携带的平板电脑"
);

foreach ($商品列表 as $商品类型 => $商品描述) {
  echo $商品类型 . ":" . $商品描述 . "<br>";
}
?>

这段代码的意思是:

  1. 遍历 $商品列表 数组,每次循环将数组的键赋值给 $商品类型,将数组的值赋值给 $商品描述
  2. 输出 $商品类型$商品描述,并在后面加上一个换行符。

foreach 循环就像一个导游,带领你参观数组中的每一个景点。

2.5 breakcontinue 语句:循环中的小助手!

breakcontinue 语句可以控制循环的执行流程。

  • break 语句: 用于跳出循环,立即结束循环的执行。
  • continue 语句: 用于跳过本次循环,继续执行下一次循环。

举个例子,我们要输出 1 到 10 的数字,但是当数字等于 5 的时候,跳出循环:

<?php
for ($i = 1; $i <= 10; $i++) {
  if ($i == 5) {
    break;
  }
  echo $i . " ";
}
?>

这段代码的输出结果是:1 2 3 4

再举个例子,我们要输出 1 到 10 的数字,但是当数字等于 5 的时候,跳过本次循环:

<?php
for ($i = 1; $i <= 10; $i++) {
  if ($i == 5) {
    continue;
  }
  echo $i . " ";
}
?>

这段代码的输出结果是:1 2 3 4 6 7 8 9 10

breakcontinue 语句就像循环中的小助手,可以帮你更好地控制循环的执行流程。

表格总结:循环迭代语句

语句 功能 适用场景
for 按照指定的次数重复执行代码 知道循环次数的情况
while 只要条件满足就一直重复执行代码 不知道循环次数,但知道循环条件的情况
do...while 先执行一次代码,然后只要条件满足就一直重复执行代码 至少需要执行一次代码的情况
foreach 遍历数组中的每一个元素 需要遍历数组的情况
break 跳出循环 需要提前结束循环的情况
continue 跳过本次循环,继续执行下一次循环 需要跳过某些循环的情况

第三章:嵌套结构——“俄罗斯套娃,层层叠叠!”

条件判断和循环迭代可以嵌套使用,就像俄罗斯套娃一样,一层套一层。这可以让你构建更复杂的逻辑。

举个例子,我们要输出一个九九乘法表:

<?php
echo "<table border='1'>";
for ($i = 1; $i <= 9; $i++) {
  echo "<tr>";
  for ($j = 1; $j <= $i; $j++) {
    echo "<td>" . $j . "*" . $i . "=" . ($i * $j) . "</td>";
  }
  echo "</tr>";
}
echo "</table>";
?>

这段代码使用了嵌套的 for 循环,外层循环控制行数,内层循环控制列数。

嵌套结构可以让你的代码更加灵活,可以处理更复杂的问题。但是,也要注意嵌套的层数不要太多,否则会影响代码的可读性和执行效率。

第四章:注意事项与最佳实践

  • 条件判断的优先级: 使用括号可以明确条件判断的优先级,避免出现意想不到的结果。例如:if (($a > 0) && ($b < 10))
  • 循环的死循环: 确保循环条件最终会变为 false,否则会导致死循环,程序会一直运行下去。
  • 代码的可读性: 使用适当的缩进和注释,可以提高代码的可读性,方便自己和他人理解。
  • 性能优化: 在循环中尽量避免执行耗时的操作,例如数据库查询。可以考虑使用缓存或者批量处理来提高性能。
  • 选择合适的循环类型: 根据实际情况选择合适的循环类型,例如知道循环次数的情况下,使用 for 循环;需要遍历数组的情况下,使用 foreach 循环。

结尾:掌控代码的艺术

好啦,各位观众老爷们,今天的PHP小课堂就到这里了。希望通过今天的讲解,大家能够掌握PHP里条件判断和循环迭代的精髓,让你的代码更加灵活,更加强大! 💪

记住,编程就像绘画,条件判断和循环迭代就是你的颜料和笔刷,只有掌握了它们,才能创作出美丽的画卷。

下次再见! 👋

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注