程序要会两件基本的事:看情况办事(分支),和重复干活(循环)。今天把 PHP 里最常用的 if、switch、for、while 一次过一遍。
if 分支:最常用的判断
if 按条件决定执行哪段代码,条件为 true 走 if,否则走 else。
<?php
$score = 76;
if ($score >= 90) {
echo "优秀"; // 90 分以上
} elseif ($score >= 60) {
echo "及格"; // 60~89,本例输出这个
} else {
echo "不及格";
}
注意写法是 elseif(也可以写 else if),多个条件从上往下依次判断,命中一个就跳出,后面的不再看。
判断相等要写两个等号 ==,一个等号 = 是赋值,这是新手最常见的笔误。另外 PHP 里 == 会做类型转换,0 == "abc" 居然是 true,想严格比较就用三个等号 ===。
switch:一个变量对多个值
同一个变量要跟一堆值比较时,switch 比一长串 elseif 清爽:
<?php
$fruit = "apple";
switch ($fruit) {
case "apple":
echo "苹果";
break;
case "banana":
echo "香蕉";
break;
default:
echo "不认识的水果";
}
每个 case 结尾记得写 break,否则程序会"掉"进下一个 case 继续执行——这个坑叫穿透,十个 PHP 新手九个踩过。default 相当于 else,兜底处理。
for 循环:知道要循环几次
for 的结构和 C 语言一样,三段式:初始化、条件、步进。
<?php
for ($i = 1; $i <= 5; $i++) {
echo "第 $i 次\n";
}
// 输出 第 1 次 到 第 5 次
来个实用点的,用 for 算 1 到 100 的和:
<?php
$sum = 0;
for ($i = 1; $i <= 100; $i++) {
$sum += $i;
}
echo $sum; // 5050
while:不知道几次,先干了再说
while 每轮先判断条件,成立才执行,适合"次数不确定"的场景:
<?php
$n = 1;
while ($n <= 3) {
echo "n = $n\n";
$n++;
}
// n = 1
// n = 2
// n = 3
条件一开始就不成立时,循环体一次都不会跑。如果希望至少跑一次,用 do-while:
<?php
$n = 100;
do {
echo "至少执行一次:n = $n\n";
$n++;
} while ($n <= 3);
// 虽然条件不成立,但还是输出了一行
用 while 时务必在循环体里推动条件变化(比如 $n++),否则就是死循环,页面会卡死。
循环控制:break 与 continue
break 直接跳出整个循环,continue 跳过本轮继续下一轮:
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 === 0) {
continue; // 偶数跳过
}
if ($i > 7) {
break; // 超过 7 就收工
}
echo "$i "; // 输出:1 3 5 7
}
顺便说一句 foreach
遍历数组在 PHP 里几乎不用 for,而是用 foreach,专门为遍历而生:
<?php
$langs = ["php", "css", "python"];
foreach ($langs as $lang) {
echo "$lang\n";
}
// php
// css
// python
需要下标时写 foreach ($langs as $i => $lang) 即可。
小结
- if / elseif / else 处理区间判断,严格比较用
=== - switch 适合一个变量对多个固定值,case 别忘了 break
- for 用于已知次数,while 用于未知次数,do-while 至少执行一次
- break 跳出循环,continue 跳过本轮
- 遍历数组优先用 foreach
这四套结构是所有 PHP 程序的骨架,把它们的脾气摸透,后面学函数、学数据库都不在话下。