今天,我们将讨论 php 中的控制结构和循环。我将向您展示如何使用 PHP 中支持的所有主要控制结构,例如 if、else、for、foreach、while 等。
什么是控制结构?
简单来说,控制结构允许您控制应用程序中的代码执行流程。通常,程序逐行按顺序执行,并且控制结构允许您更改该流程,通常取决于某些条件。
控制结构是 PHP 语言的核心功能,它允许您的脚本对不同的输入或情况做出不同的响应。这可能允许您的脚本根据用户输入、文件内容或其他一些数据给出不同的响应。
下面的流程图解释了控制结构在 PHP 中是如何工作的。
如上图所示,首先检查一个条件。如果条件为真,则执行条件代码。这里要注意的重要一点是,代码执行在条件代码执行后会正常继续。
让我们考虑以下示例。
在上面的例子中,程序检查用户是否登录。根据用户的登录状态,他们将被重定向到 登录 页面或 我的帐户 页面。在这种情况下,控制结构通过将用户重定向到不同的页面来结束代码执行。这是 PHP 语言的一项关键能力。
PHP 支持多种不同的控制结构:
if
else
elseif
switch
while
do-while
for
foreach
和更多
让我们通过示例来看看其中的一些控制结构。
学习 PHP 控制结构
在上一节中,我们了解了 PHP 中控制结构的基础知识以及它们在应用程序开发中的用处。在本节中,我们将介绍一些重要的控制结构,您最终会在日常应用程序开发中经常使用它们。
PHP If 语句
如果与它一起提供的 表达式的计算结果为 true,则if const ruct 允许您执行一段代码。
让我们看一下以下示例,以了解它的实际工作原理。
<?php $age = 50; if ($age > 30) { echo "Your age is greater than 30!"; } ?>
上面的示例应该输出 Your age is greater than 30! 消息,因为表达式的计算结果为真。事实上,如果你只想执行一条语句,上面的例子可以不加括号重写,如下面的代码片段所示。
<?php $age = 50; if ($age > 30) echo "Your age is greater than 30!"; ?>
另一方面,如果要执行多个语句,则必须使用方括号,如以下代码段所示。
<?php if (is_array($user)) { $user_id = isset($user['user_id']) ? $user['user_id'] : ''; $username = isset($user['username']) ? $user['username'] : ''; // and more statements... } ?>
PHP Else 语句
在上一节中,我们讨论了 if 构造,它允许您在表达式计算结果为真时执行一段代码。另一方面,如果表达式的计算结果为假,它不会做任何事情。通常,如果表达式的计算结果为 false,您还希望执行不同的代码片段。这就是 else 声明出现的地方。
您总是将 else 语句与语句结合使用 if 。基本上,您可以如以下伪代码所示定义它。
if (expression) { // code is executed if the expression evaluates to TRUE } else { // code is executed if the expression evaluates to FALSE }
让我们修改前面的示例以了解它是如何工作的。
<?php $age = 50; if ($age < 30) { echo "Your age is less than 30!"; } else { echo "Your age is greater than or equal to 30!"; } ?>
因此,当您有两个选择并且必须执行其中一个时,您可以使用该 if-else 构造。
PHP Else If 语句
我们可以将 elseif 语句视为结构的扩展 if-else 。如果您有两个以上的选择可供选择,则可以使用该 elseif 语句。
我们来研究一下 elseif 语句的基本结构,如下面的伪代码所示。
if (expression1) { // code is executed if the expression1 evaluates to TRUE } elseif (expression2) { // code is executed if the expression2 evaluates to TRUE } elseif (expression3) { // code is executed if the expression3 evaluates to TRUE } else { // code is executed if the expression1, expression2 and expression3 evaluates to FALSE, a default choice }
同样,让我们尝试使用一个真实的示例来理解它。
<?php $age = 50; if ($age < 30) { echo "Your age is less than 30!"; } elseif ($age > 30 && $age < 40) { echo "Your age is between 30 and 40!"; } elseif ($age > 40 && $age < 50) { echo "Your age is between 40 and 50!"; } else { echo "Your age is greater than 50!"; } ?>
如您在上面的示例中所见,我们有多个条件,因此我们使用了一系列 elseif 语句。如果所有 条件都为 false,它会执行最后一条 语句中提供的代码。ifelse
PHP 切换语句
switch 语句有点类似于 elseif 我们刚刚在上一节中讨论过的语句。唯一的区别是正在检查的表达式。
在 elseif 语句的情况下,您有一组不同的条件,并且将根据条件执行适当的操作。另一方面,如果要比较具有不同值的变量,可以使用 switch 语句。
像往常一样,一个例子是理解该 switch 陈述的最佳方式。
<?php $favourite_site = 'Code'; switch ($favourite_site) { case 'Business': echo "My favourite site is business.www.weixiaolive.com!"; break; case 'Code': echo "My favourite site is www.weixiaolive.com/en!"; break; case 'Web Design': echo "My favourite site is webdesign.www.weixiaolive.com!"; break; case 'Music': echo "My favourite site is music.www.weixiaolive.com!"; break; case 'Photography': echo "My favourite site is photography.www.weixiaolive.com!"; break; default: echo "I like everything at www.weixiaolive.com!"; } ?>
如您在上面的示例中所见,我们要检查 $favourite_site 变量的值,并根据变量的值 $favourite_site 打印一条消息。
对于要使用 $favourite_site 变量检查的每个值,您必须定义 case 块。如果 value与 case匹配,则与该 case 块关联的代码将被执行。之后,您需要使用该 break 语句来结束代码执行。如果不使用该 break 语句,脚本将一直执行到 switch 语句中的最后一个块。
最后,如果你想在变量的值不匹配任何大小写的情况下执行一段代码,你可以在 default 块下定义它。当然,这不是强制性的——它只是提供 默认 情况的一种方式。
这就是条件控制结构的故事。我们将在下一节讨论 PHP 中的循环。
PHP中的循环
当您想要重复执行一段代码直到条件评估为假时,PHP 中的循环非常有用。因此,只要条件评估为真,代码就会重复执行,一旦条件评估为假,脚本就会在循环后继续执行代码。
下面的流程图解释了循环在 PHP 中是如何工作的。
正如您在上面的屏幕截图中看到的,循环包含一个条件。如果条件评估为真,则执行条件代码。执行条件代码后,控制返回到循环条件,流程继续进行,直到条件评估为假。
在本节中,我们将介绍 PHP 支持的不同类型的循环。
PHP中的while循环
当 while 您想要重复执行一段代码直到 while 条件评估为假时,将使用循环。
您可以如以下伪代码所示定义它。
while (expression) { // code to execute as long as expression evaluates to TRUE }
让我们看一个真实的例子来了解 while 循环在 PHP 中是如何工作的。
<?php $max = 0; echo $i = 0; echo ","; echo $j = 1; echo ","; $result=0; while ($max < 10 ) { $result = $i + $j; $i = $j; $j = $result; $max = $max + 1; echo $result; echo ","; } ?>
如果您熟悉斐波那契数列,您可能知道上面的程序做了什么——它输出前十个数字的斐波那契数列。当 while 您不知道循环中将发生的迭代次数时,通常使用循环。
PHP 中的 Do-While 循环
循环与 do-while 循环非常相似 while ,唯一的区别是在第一次迭代结束时检查 while 条件。因此,我们可以保证循环代码至少执行一次,而与 while 表达式的结果无关。
让我们看一下 do-while 循环的语法。
do { // code to execute } while (expression);
do-while 让我们通过一个真实世界来了解可以使用循环的可能情况 。
<?php $handle = fopen("file.txt", "r"); if ($handle) { do { $line = fgets($handle); // process the line content } while($line !== false); } fclose($handle); ?>
在上面的示例中,我们尝试逐行读取文件。首先,我们打开了一个文件进行读取。在我们的例子中,我们不确定文件是否包含任何内容。因此,我们需要 fgets 至少执行一次该函数来检查文件是否包含任何内容。所以我们可以在 do-while 这里使用循环。 在循环的第一次迭代之后do-while 评估条件 。
PHP 中的 For 循环
通常, for 循环用于执行一段代码特定次数。换句话说,如果您已经知道要执行一段代码的次数,那么 for 循环是最好的选择。
让我们看一下 for 循环的语法。
for (expr1; expr2; expr3) { // code to execute }
该 expr1 表达式用于初始化变量,并且始终被执行。该 expr2 表达式也在循环开始时执行,如果它的计算结果为真,则执行循环代码。循环代码执行后, expr3 执行。通常, expr3 用于更改 expr2 表达式中使用的变量的值。
让我们通过下面的例子来看看它是如何工作的。
<?php for ($i=1; $i<=10; ++$i) { echo sprintf("The square of %d is %d.</br>", $i, $i*$i); } ?>
上面的程序输出前十个数字的平方。它初始化 $i 为 1,只要 $i 小于或等于 10 就重复,并 $i 在每次迭代时加 1。
PHP 中的每个
foreach 循环用于迭代数组变量。 如果您有一个数组变量,并且想要遍历该数组的每个元素,那么 foreach 循环是最佳选择。
让我们看几个例子。
<?php $fruits = array('apple', 'banana', 'orange', 'grapes'); foreach ($fruits as $fruit) { echo $fruit; echo "<br/>"; } $employee = array('name' => 'John Smith', 'age' => 30, 'profession' => 'Software Engineer'); foreach ($employee as $key => $value) { echo sprintf("%s: %s</br>", $key, $value); echo "<br/>"; } ?>
如果要访问数组值,可以使用 foreach 循环的第一个版本,如上例所示。另一方面,如果您想同时访问键和值,则可以如上 $employee 例所示进行。
打破循环
有时您可能想在循环运行之前跳出循环。这可以使用 break 关键字轻松实现。它会让你摆脱当前的 for, foreach, while, do-while, 或 switch 结构。
您还可以 通过提供数字参数break 来退出多个嵌套循环。例如, using break 3 将使您摆脱 3 个嵌套循环。但是,如果您使用的 PHP 版本大于或等于 5.4,则不能将变量作为数字参数传递。
<?php echo 'Simple Break'; for($i = 1; $i <= 2; $i++) { echo "\n".'$i = '.$i.' '; for($j = 1; $j <= 5; $j++) { if($j == 2) { break; } echo '$j = '.$j.' '; } } /* Simple Break i = 1 j = 1 i = 2 j = 1 */ echo 'Multi-level Break'; for($i = 1; $i <= 2; $i++) { echo "\n".'$i = '.$i.' '; for($j = 1; $j <= 5; $j++) { if($j == 2) { break 2; } echo '$j = '.$j.' '; } } /* Multi-level Break i = 1 j = 1 */ ?>
另一个可以中断 PHP 循环的关键字是 continue. 但是,这只会跳过当前循环迭代的其余部分,而不是完全跳出循环。就像 一样 break,您也可以使用数值 with continue 来指定当前迭代应该跳过多少个嵌套循环。
<?php echo 'Simple Continue'; for($i = 1; $i <= 2; $i++) { echo "\n".'$i = '.$i.' '; for($j = 1; $j <= 5; $j++) { if($j == 2) { continue; } echo '$j = '.$j.' '; } } /* Simple Continue i = 1 j = 1 j = 3 j = 4 j = 5 i = 2 j = 1 j = 3 j = 4 j = 5 */ echo 'Multi-level Continue'; for($i = 1; $i <= 2; $i++) { echo "\n".'$i = '.$i.' '; for($j = 1; $j <= 5; $j++) { if($j == 2) { continue 2; } echo '$j = '.$j.' '; } } /* Multi-level Continue i = 1 j = 1 i = 2 j = 1 */ ?>
结论
在本文中,我们讨论了 PHP 中不同的控制结构和循环。它们是 PHP 或任何编程语言的重要组成部分。
- PHP If 语句
- PHP Else 语句
- PHP Else If 语句
- PHP 切换语句
- PHP中的while循环
- PHP 中的 Do-While 循环
- PHP 中的 For 循环
- PHP 中的每个