使用PHP开关语句

在这篇文章中,我们将讨论PHP中switch语句的基础知识。除了开关语句的语法之外,我们还将通过几个真实的例子来演示如何使用它。

切换语句的用途是什么?

在PHP中,switch语句被认为是if-elseif-else语句的一种替代。很多时候,你想用不同的值来比较一个变量,并在此基础上想执行一段代码。你想到的第一件事就是实现一系列的if-elseif-else语句来实现它,如下面的片段所示。

if ($favorite_site == 'Design') {
    echo "Your favorite site is design.tutsplus.com!";
} elseif ($favorite_site == 'Code') {
    echo "Your favorite site is code.tutsplus.com!";
} elseif ($favorite_site == 'Business') {
    echo "Your favorite site is business.tutsplus.com!";
}
复制代码

如果只是两三个条件的问题,用if-elseif-else语句实现就可以了。但如果你需要处理几个条件,如果用if-elseif-else语句来实现,代码就会变得非常冗长,而且很难管理它。在这种情况下,使用switch语句是最理想的,而这正是switch语句的设计目的。

在我们继续详细讨论switch语句之前,让我们先看看上面的例子在使用switch语句后是什么样子。

switch ($favorite_site) {
    case 'Design':
        echo "Your favorite site is design.tutsplus.com!";
        break;
    case 'Code':
        echo "Your favorite site is code.tutsplus.com!";
        break;
    case 'Business':
        echo "Your favorite site is business.tutsplus.com!";
        break;
}
复制代码

这看起来是不是更紧凑、更整齐?所以,当涉及到处理代码中的多个条件时,switch语句就显得非常方便了。

语法和例子

在本节中,我们将介绍switch语句的语法和几个真实的例子,以演示如何在日常的PHP开发中使用它。

语法

让我们来看看switch语句的语法。

switch (expression)
{
  case value1:
    // code to be executed if expression equals to value1
    break;
  case value2:
    // code to be executed if expression equals to value2
    break;
  case value3:
    // code to be executed if expression equals to value3
    break;
    ...
    ...
  default:
    // code to be executed if no cases are matched
}
复制代码

它从switch语句中的表达式开始。首先,表达式被评估,表达式的结果被依次与所有的情况进行比较,直到有一个匹配。如果有匹配的,则执行与该特定案例相关的代码。如果没有匹配,并且有一个default 案例可用,它将执行该代码。

重要的是,你一定不要忘记每个案例中的break 语句。如果一个案例被匹配,而该案例中没有break语句,那么下面所有案例的代码都会被执行,即使案例值不匹配。

让我们通过下面的例子来了解break语句的重要性。

<?php
$favorite_site = 'Code';
switch ($favorite_site) {
    case 'Design':
        echo "Your favorite site is design.tutsplus.com!";
        break;
    case 'Code':
        echo "Your favorite site is code.tutsplus.com!";
    case 'Business':
        echo "Your favorite site is business.tutsplus.com!";
        break;
}
?>
复制代码

如果你认为它只会输出Your favorite site is code.tutsplus.com! ,那你就错了!它将输出: 。它将会输出。

Your favorite site is code.tutsplus.com!
Your favorite site is business.tutsplus.com!
复制代码

这是因为你在第二种情况下没有包含break 语句,因此,无论$favorite_site 变量的值如何,PHP都会执行下面所有情况的代码。所以当你在代码中使用switch语句时,_千万不要_忘记break 语句。

最后,default 案例是可选的,不是必须提供。它的作用是提供默认代码,如果表达式的值与任何情况都不匹配,则执行该代码。

以上就是关于switch语句的语法,我们将在下一节看到几个真实的例子。

例子

现在,你已经熟悉了switch语句的语法,而且在上一节中你已经看了几个基本的例子。在这一节中,我们将讨论开关语句的几个高级例子。

同一代码块的多种情况

让我们来看看下面的例子。

<?php
switch ($favorite_site)
{
    case 'Design':
    case 'Code':
    case 'Business':
            echo "It's great to see that you love one of our tutsplus group of websites!";
            break;
    default:
            echo "You would like to explore tutsplus.com, we're sure you would love it!";
}
?>
复制代码

有时你想在不同的情况下执行同一段代码。上面的例子证明了这一点。在上面的例子中,如果$favorite_site 变量的值是'Design''Code''Business' ,它将对这三种情况执行相同的代码,否则它将执行与默认情况相关的代码。

开关语句中的表达式

在我们到目前为止讨论的例子中,我们在switch语句中使用了一个变量。事实上,switch语句也允许你使用表达式。

让我们看看如何在switch语句中使用表达式,如下面的例子所示。

<?php
switch (date("N", time()))
{
    case 0:
        echo 'Sunday';
        break;
    case 1:
        echo 'Monday';
        break;
    case 2:
        echo 'Tuesday';
        break;
    case 3:
        echo 'Wednesday';
        break;
    case 4:
        echo 'Thursday';
        break;
    case 5:
        echo 'Friday';
        break;
    case 6:
        echo 'Saturday';
        break;
}
?>
复制代码

首先,PHP评估switch语句中的表达式,并将该表达式的结果与所有的情况相匹配。在本例中,该语句输出当前的星期几。

嵌套的开关语句

最后,你还可以嵌套开关语句。让我们通过下面的例子来看看这是如何工作的。

<?php
switch( $type )
{
    case "Courses":
        switch( $category )
        {
            case "Code":
                   echo "Visit https://code.tutsplus.com/courses!";
                break;
            case "Web Design":
                   echo "Visit https://webdesign.tutsplus.com/courses!";
                break;
        }
        break;
    case "Tutorials":
        switch( $category )
        {
            case "Code":
                echo "Visit https://code.tutsplus.com/tutorials!";
                break;
            case "Business":
                echo "Visit https://business.tutsplus.com/tutorials!";
                break;
        }
        break;
    case "Guides":
        switch( $category )
        {
            case "Code":
                echo "Visit https://code.tutsplus.com/series!";
                break;
            case "Business":
                echo "Visit http://business.tutsplus.com/series!";
                break;
        }
        break;  
}
?>
复制代码

正如你所看到的,在另一个开关语句中使用一个开关语句是完全有效的。然而,你应该尽量避免这样做,因为它使你的代码更难阅读和维护。

总结

今天,我们讨论了如何在PHP中使用switch语句。这是一个非常有用的语言特性,它允许你简化冗长的if-elseif-else语句,并保持代码的清晰和可读。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享