侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php基础知识switch结构详解,及刚在论坛上看到的一道面试题做分析

php  /  管理员 发布于 2年前   599

官网上的描述:

switch 语句类似于具有同一个表达式的一系列 if 语句。

很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。

这正是 switch 语句的用途。

Note: 
注意和其它语言不同,continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。

Note:
注意 switch/case 作的是松散比较。


分析面试题:

        $a = 0;
        while ($a < 5) {
            switch($a) {
                case 0:
                case 3:
                    $a = $a+2;
                case 1:
                case 2:
                    $a = $a+3;
                default:
                    $a = $a+5;
            }
        }
        echo $a;

上述代码的输出结果:C

A: 0

B 5

C 10

D 其他


为什么选C? 官网文档有这么一句话

为避免错误,理解 switch 是怎样执行的非常重要。

switch 语句一行接一行地执行(实际上是语句接语句)。

开始时没有代码被执行。

仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。

如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段.


有了上面的解释,这道题就很容易解决了。

我们分析一下面试题执行步骤:

第一次走到 case 3: 然后 $a = 2

第二次走到 case 2: 此时 $a=5

最后到 default 此时 $a = 10 跳出循环


php : https://www.php.net/manual/zh/control-structures.switch.php



  • 上一条:
    根据ip获取该ip的地址/经纬度信息,最新腾讯位置服务接口介绍
    下一条:
    根据两地经纬度计算两地之间的间距距离,并用php编写案例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在PHP 8.3版本中json_validate跟json_decode函数对比浅析(0个评论)
    • 在PHP语言中class类自动加载相关文件浅析(0个评论)
    • PHP 8.2版本发布(0个评论)
    • 最新版PHP 8.2中的弃用情况(0个评论)
    • 在php开发商品sku功能时实现批量生成sku组合的两种方式介绍(0个评论)
    • 近期文章
    • 在Laravel应用程序如何减少代码重复编写(0个评论)
    • 在laravel项目中提高安全性方式推荐:CSP内容安全策略(0个评论)
    • 在go语言中从值中获取常量名称代码示例(0个评论)
    • 在go语言中如何通过名称获得结构字段和值代码示例(0个评论)
    • 在go语言中用JQuery + html2canvas实现拍摄浏览器的屏幕截图示例(0个评论)
    • 人生感悟分享:讲一个大学毕业生到社畜老狗的蜕变心路历程(0个评论)
    • laravel9框架报错Target class... does not exist解决方式(0个评论)
    • Laravel 9.48版本发布(0个评论)
    • Meta高级工程师现身说法:程序员干得越久,代码写得越少?(0个评论)
    • 本站zongscan祝大家除夕快乐,2023有奔头(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客