目录
if语句
else语句
elseif语句
while语句
do-while语句
for语句
foreach语句
break
continue
switch语句
match表达式
return
include
include_once
require
require_once
goto
流程控制是指用于控制代码执行顺序的机制,PHP提供了多种流程控制结构,例如条件判断语句以及循环语句等。
if语句
if 语句是很多语言包括 PHP 在内最重要的特性之一,它允许按照条件执行代码片段。它的结构:if (条件) {代码},也就是说如果满足判断条件就会执行结构体里面的代码。
#示例
<?php
$a = 10;
if ($a > 9) {
echo "变量a比9大";
}
执行结果
变量a比9大
else语句
如果满足某个条件执行某些代码,不满足则执行另外的代码,这就是else的功能。
#示例
<?php
$a = 7;
if ($a > 9) {
echo "变量a比9大";
} else {
echo "变量a比9小";
}
执行结果
变量a比9小
elseif语句
如果需要根据成绩来划分不及格、及格、良好、优秀时,简单的if-else就不能满足了,elseif就是它的延伸。
#示例
<?php
$score = 80;
if ($score < 60) {
echo "不及格";
} elseif ($score < 70) {
echo "及格";
} elseif ($score < 85) {
echo "良好";
} else {
echo "优秀";
}
#执行结果
良好
while语句
while循环式PHP中最简单的循环类型,基本格式是while(条件){代码},只要满足条件(即为true)就会执行里面的代码,执行之后会再次判断条件,满足则会再次执行,周而复始,直至不再满足条件的时候跳出循环。
#示例
<?php
$i = 0;
while ($i < 3) {
echo $i . PHP_EOL;
$i++;
}
执行结果
0
1
2
do-while语句
do-while语句跟while语句很相似,区别就在于do-while语句会先执行一次代码,后续才会判断条件,也就说无论条件是否满足,都会执行一次代码。
#示例
<?php
$i = 0;
do {
echo $i . PHP_EOL;
} while ($i > 3);
执行结果
0
for语句
for语句也叫for循环,它是另外一种循环结构。语法:for(expr1; expr2; expr3){statement};第一个表达式在循环前会执行一次,第二个表达式是判断条件,如果符合则执行嵌套语句(statement),之后会执行第三个表达式,然后是第二个表达式......。
#示例
<?php
for ($i = 0; $i < 4; $i++) {
echo $i .PHP_EOL;
}
#执行结果
0
1
2
3
foreach语句
foreach是PHP提供的遍历对象、数组的简单方式。
#示例(遍历数组)
<?php
$arr = [
'name' => 'lisi',
'age' => 18,
'lang' => 'chinese'
];
foreach($arr as $key=>$value) {
echo "key是:". $key . "---value是:". $value . PHP_EOL;
}
#执行结果
key是:name---value是:lisi
key是:age---value是:18
key是:lang---value是:chinese
break
结束当前循环,如for、while、do-while、foreach等。
#示例
<?php
$i = 5;
while ($i < 20) {
if ($i > 8) {
break;
}
echo $i . PHP_EOL;
$i++;
}
执行结果
5
6
7
8
正常它会输出到19,由于我们做了条件判断当它大于8的时候跳出循环,所以不再往后执行。
continue
continue用来跳过某次循环,不再往下执行。
#示例
要求:输出16-19的数字,跳过3的倍数的数字。
<?php
$i = 16;
while ($i < 20) {
if ($i % 3 === 0) {
$i++;
continue;
}
echo $i . PHP_EOL;
$i++;
}
执行结果
16
17
19
switch语句
switch语句类似于同一个表达式的一系列if语句,也就说一个表达式的多种结果流程控制。需要注意的是,如果case后面没有break,则会往下继续匹配。
#示例
<?php
$score = 80;
switch ($score) {
case $score < 60 :
echo "不及格";
break;
case $score < 70 :
echo "及格";
break;
case $score < 85 :
echo "良好";
break;
default:
echo "优秀";
}
执行结果
良好
#示例(case后没有break)
<?php
$score = 65;
switch ($score) {
case $score < 60 :
echo "不及格";
case $score < 70 :
echo "及格";
case $score < 85 :
echo "良好";
default:
echo "优秀";
}
执行结果
及格良好优秀
本意是输出“及格”,但是由于没有紧接着break,导致继续往后匹配产生了错误的结果。
match表达式
match
表达式和 switch
语句类似, 都有一个表达式主体,可以和多个可选项进行比较。之前的博客中已经有了介绍,这里不再赘述,博客地址:PHP8.0新特性_php 8.0新特性-****博客。
return
就像它的意思一样,返回。如果在函数中调用return语句,则不再往下执行;如果在全局范围中调用,则当前脚本文件中止运行。
#示例
<?php
echo "start";
return;
echo "test";
echo "end";
执行结果
start
可以看到后面两条语句并没有执行。
include
include 表达式包含并运行指定文件。如果要引用的文件不存在,则会抛出警告信息。
#示例
创建1.php
<?php
$name = "这是1.php定义的变量";
创建2.php
<?php
include "./1.php";
echo $name;
执行2.php结果
这是1.php定义的变量
通过include的引用方式,可以直接其他文件定义的数据。
include_once
include_once 跟 include 基本相同,唯一的区别是include_once会检查该文件是否已经引入,如果是则不会再执行引入操作。
require
require 跟 include 差不多,只是在失败时会抛出错误信息。
require_once
require_once 和 require 基本相同,唯一的区别是require_once会检查该文件是否已经引入,如果是则不会再执行引入操作。
goto
goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用区分大小写的目标名称加上冒号来标记,指令则是goto加上目标位置的名称。 goto有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。
#示例
<?php
for ($i = 0; $i < 8; $i++) {
if ($i === 3) {
goto a;
}
echo $i . PHP_EOL;
}
echo "这是标记之前的";
a:
echo "跳到了这里";
执行结果
0
1
2
跳到了这里
完结
如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。
我是老卢,一个热爱分享、不断探索的知识旅者。