鱼C论坛

 找回密码
 立即注册
查看: 2036|回复: 0

[庖丁解牛] 0 0 2 9 ● switch...case...语句小全

[复制链接]
发表于 2017-6-24 11:27:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-6-24 11:27 编辑

eeb4bce73fd1df36f037d96cb2ddb2b0.png


当一个变量或一个表达式有多个值的时候,除了用0 0 2 8 ● if...else if...else...语句小全,还可以使用switch...case语句。

switch结构上,灰常好理解,相当于后续分支的开始,会触发筛选工作

看一下语法:
<?php
switch (n)
{
case label1:
    如果 n=label1,此处代码将执行;
    break;
case label2:
    如果 n=label2,此处代码将执行;
    break;
case labelnx:
    如果 n=labelx,此处代码将执行;
    break;
default:
    如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>

首先对一个简单的表达式 n(通常是变量)进行一次计算。

将表达式的值与结构中每个 case 的值进行比较。

如果存在匹配,则执行与 case 关联的代码。

代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。

default 语句用于不存在匹配(即没有 case 为真)时执行。

流程图:
Snip20170624_215.png


上代码:
<?php
for($n = 1 ; $n < 6 ; $n++)
{
         
        switch ($n) {
                case "1":
                echo "$n - We Love FishC"."<br>";
                        // break;

                case "2":
                echo "$n - Welcome to FishC.com"."<br>";
                        // break;

                case "3":
                echo "$n - FishC need U!"."<br>";
                        // break;
                
                default:
                echo "$n - Change the world by Program"."<br>";        
                        // break;
        }

}

?>
Snip20170624_217.png


握草,为什么那么尴尬!


外层循环,从1到5,按照我们的理解应该,case条件,随着循环体执行一次则对应执行一次

然而,从上面的图中,我们可以看到,并不是酱紫滴!

聪明的鱼油,应该看到被注释掉的break了


没错,问题症结就在这里,当我们使用switch..case语句时,如果不添加break(跳出)
当某个case条件满足后,仍会继续执行后续的代码,哪怕条件没有满足,也会执行case内部语句。这就解释了为什么当一个数字,第一次满足case条件后,仍会抛出它不满足条件的case语句内部代码。


现在把注释打开,当满足条件后,跳出switch...case语句,继续执行外层for循环。
<?php
for($n = 1 ; $n < 6 ; $n++)
{
         
        switch ($n) {
                case "1":
                echo "$n - We Love FishC"."<br>";
                        break;

                case "2":
                echo "$n - Welcome to FishC.com"."<br>";
                        break;

                case "3":
                echo "$n - FishC need U!"."<br>";
                        break;
                
                default:
                echo "$n - Change the world by Program"."<br>";        
                        break;
        }

}

?>
Snip20170624_218.png


在日常开发中,99.999%时候我们都会写break语句哦~



这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 06:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表