• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

PHP控制结构和循环:if、else、for、foreach、while等

今天,我们将讨论 php 中的控制结构和循环。我将向您展示如何使用 PHP 中支持的所有主要控制结构,例如 if、else、for、foreach、while 等。

什么是控制结构?

简单来说,控制结构允许您控制应用程序中的代码执行流程。通常,程序逐行按顺序执行,并且控制结构允许您更改该流程,通常取决于某些条件。

控制结构是 PHP 语言的核心功能,它允许您的脚本对不同的输入或情况做出不同的响应。这可能允许您的脚本根据用户输入、文件内容或其他一些数据给出不同的响应。

下面的流程图解释了控制结构在 PHP 中是如何工作的。

PHP控制结构和循环:if、else、for、foreach、while等  第1张

如上图所示,首先检查一个条件。如果条件为真,则执行条件代码。这里要注意的重要一点是,代码执行在条件代码执行后会正常继续。

让我们考虑以下示例。

PHP控制结构和循环:if、else、for、foreach、while等  第2张

在上面的例子中,程序检查用户是否登录。根据用户的登录状态,他们将被重定向到 登录 页面或 我的帐户 页面。在这种情况下,控制结构通过将用户重定向到不同的页面来结束代码执行。这是 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控制结构和循环:if、else、for、foreach、while等  第3张

正如您在上面的屏幕截图中看到的,循环包含一个条件。如果条件评估为真,则执行条件代码。执行条件代码后,控制返回到循环条件,流程继续进行,直到条件评估为假。

在本节中,我们将介绍 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 控制结构
    • PHP If 语句
    • PHP Else 语句
    • PHP Else If 语句
    • PHP 切换语句
  • PHP中的循环
    • PHP中的while循环
    • PHP 中的 Do-While 循环
    • PHP 中的 For 循环
    • PHP 中的每个
  • 打破循环
  • 结论