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

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

什么是控制结构?

简而言之,控制结构使您可以控制应用程序中代码的执行流程。 通常,程序是逐行顺序执行的,并且控制结构通常允许您根据特定条件来更改该流程。

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

以下流程图说明了控件结构在PHP中的工作方式。

如果条件流

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

让我们考虑以下示例。

If-Else条件流

在上面的示例中,程序将检查用户是否已登录。根据用户的登录状态,他们将被重定向到“ 登录”页面或“ 我的帐户”页面。 在这种情况下,控制结构通过将用户重定向到其他页面来结束代码执行。 这是PHP语言的一项关键功能。

PHP支持许多不同的控制结构:

  • if
  • else
  • elseif
  • switch
  • while
  • do - while
  • for
  • foreach
  • 和更多

让我们通过示例来看看其中一些控制结构。

经历不同的控制结构

在上一节中,我们学习了PHP中的控制结构的基础及其在应用程序开发中的有用性。 在本节中,我们将介绍一些重要的控制结构,这些结构最终将在日常应用程序开发中频繁使用。

如果

if附带的表达式的计算结果为true, if构造允许您执行一段代码。

让我们看下面的示例,以了解其实际工作原理。

<?php
$age = 50;

if ($age > 30)
{
  echo "Your age is greater than 30!";
}
?>

上面的示例应该输出Your age is greater than 30! 消息,因为表达式的计算结果为true。 实际上,如果只想执行一条语句,则可以将下面的代码片段重写为上面的示例,而无需括号。

<?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...
}
?>

其他

在上一节中,我们讨论了if构造,如果表达式的计算结果为true,则该构造使您可以执行一段代码。 另一方面,如果表达式的计算结果为false,则不会执行任何操作。 通常,如果表达式的计算结果为false,您还希望执行其他代码段。 这就是else语句出现的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 30!";
}
?>

因此,当您有两个选择并且必须执行其中一个选择时,可以使用if-else构造。

否则

我们可以将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语句。 if所有if条件评估为false,它将执行最后else语句中提供的代码。

开关

switch语句与上一节中刚刚讨论过的elseif语句有些相似。 唯一的区别是正在检查的表达式。

对于elseif语句,您有一组不同的条件,并且将根据条件执行适当的操作。 另一方面,如果要比较具有不同值的变量,则可以使用switch语句。

与往常一样,示例是理解switch语句的最佳方法。

<?php
$favourite_site = 'Code';

switch ($favourite_site) {
  case 'Business':
    echo "My favourite site is business.tutsplus.com!";
    break;
  case 'Code':
    echo "My favourite site is code.tutsplus.com!";
    break;
  case 'Web Design':
    echo "My favourite site is webdesign.tutsplus.com!";
    break;
  case 'Music':
    echo "My favourite site is music.tutsplus.com!";
    break;
  case 'Photography':
    echo "My favourite site is photography.tutsplus.com!";
    break;
  default:
    echo "I like everything at tutsplus.com!";
}
?>

正如你可以在上面的例子中看到的,我们要检查的价值$favourite_site变量,并基于价值$favourite_site我们要打印一个信息变量。

对于要使用$favourite_site变量检查的每个值,必须定义case块。 如果该值与案例匹配,则将执行与该案例块关联的代码。 之后,您需要使用break语句来结束代码执行。 如果不使用break语句,脚本将一直执行到switch语句的最后一块。

最后,如果您想在变量的值不匹配任何情况下执行一段代码,则可以在default块下定义它。 当然,这不是强制性的,它只是提供默认情况的一种方式。

这就是条件控制结构的故事。 下一节将讨论PHP中的循环。

循环

当您要重复执行一段代码直到条件评估为false时,PHP中的循环很有用。 因此,只要条件评估为true,便会重复执行代码,而条件评估为false时,脚本将在循环后继续执行代码。

以下流程图说明了循环在PHP中的工作方式。

循环流量

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

在本节中,我们将介绍PHP支持的不同类型的循环。

While循环

当您要重复执行一段代码直到while条件的计算结果为false时,将使用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循环。

做时循环

do-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循环。 do-while在循环的第一次迭代之后评估条件。

对于循环

通常, for循环用于执行一段特定次数的代码。 换句话说,如果您已经知道要执行代码块的次数,那么for循环是最好的选择。

让我们看一下for循环的语法。

for (expr1; expr2; expr3)
{
  // code to execute
}

expr1表达式用于初始化变量,并且始终执行。 expr2表达式也将在循环开始时执行,如果计算结果为true,则将执行循环代码。 执行循环代码后,将执行expr3 。 通常, expr3用于更改expr2表达式中使用的变量的值。

让我们看下面的示例,看看它是如何工作的。

<?php
for ($i=1; $i<=10; ++$i)
{
  echo sprintf("The square of %d is %d.</br>", $i, $i*$i);
}
?>

上面的程序输出前十个数字的平方。 它将$i初始化$i 1,只要$i小于或等于10,便会重复,并在每次迭代时将$i 1。

对于每个

foreach循环用于遍历数组变量。 如果您有一个数组变量,并且想要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示例所示进行操作。

结论

在本文中,我们讨论了PHP中的不同控件结构和循环。 它们是PHP或任何与此相关的编程语言的基本组成部分。

希望您喜欢这篇文章,如果您有任何疑问,请随时使用下面的提要来问他们!

翻译自: https://code.tutsplus.com/tutorials/php-control-structures-and-loops--cms-31999

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值