在这篇文章中,我们将讨论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语句,并保持代码的清晰和可读。