我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP中实用的开关命令

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP中实用的开关命令

确保 PHP 中结构良好的 Switch 命令

在 PHP 中,switch语句是控制程序流程的强大工具,尤其是在处理多个条件分支时。然而,实现干净高效的转换也有其自身的障碍。这篇文章探讨了检查“switch”命令质量的基本技巧和实践,以确保代码质量并优化其性能。

缺少默认条目

首先要考虑的是该switch声明是否包含default案例。Adefault充当后备选项,确保在没有定义的case匹配项时执行代码。

default应始终存在。事实上,命令match是 的替代版本switch,当它无法匹配任何case, 并且default缺少 时,它会引发异常。

<?php
switch($a) {
    case 0:
      echo 'A';
      break;
       
    case 1:
      echo 'A';
      break;
}
 
?>

default服务于不同的目的:

  • 将所有其他情况一并处理。这是当有限的案例列表可用时,并且该列表之外的任何事情都可以以单一方式处理。
  • 如果达到则引发错误。在这种情况下,前面的上下文switch可确保处理有限的案例列表。然后,每当合法的情况之外的情况到达命令时,就应该引发异常。
<?php
switch($a) {
    case 0:
      echo 'A';
      break;
       
    case 1:
      echo 'A';
      break;
       
    default:
      throw new MyException('This should be zero or one');
}
 
?>

始终确保交换机有默认值。

重复案例

检查switch陈述中是否有重复案例是有回报的。PHP 只处理它遇到的第一种情况,忽略其他情况。这会导致死代码,开关中的一些分支将被忽略并且永远不会被使用。

<?php
switch($a) {
    case 'gif':
        // doSomething() and break
       
    case 'jpeg':
    case 'jpg':
        // doSomething() and break
 
    case 'png':
        // doSomething() and break
 
    case 'gif':
        // doSomething() and break
       
    default:
      throw new MyException('This should be an image format');
}
 
?>

重复的情况经常发生在很长的案例列表中。

当实际值被常量名称或 PHP 的类型杂耍隐藏时,也会发生这种情况。确实,switch使用了宽松的比较风格,有些文字实际上可能是相同的。

<?php
 
// $a in [null, false, '', 0]
switch($a) {
    // Most of the cases ends here, except 0
    // because it is the first encountered
    case '':
        print 'Empty string';break;
 
    // 0 goes here
    case 0:
        print 'Zero';break;
       
    case false:
        print 'false';break;
 
    case null:
        print 'null';break;
       
    default:
      throw new MyException('This should be empty');
}
 
?>

仔细检查案例值并删除重复项。

重复的代码块

另一个常见问题是不同 case 分支中的代码块重复。这种冗余会使您的系统变得臃肿switch,并且使将来的更新变得困难。考虑重构代码以消除重复并合并案例。

<?php
 
switch($a) {
    case 'john':
        $b = 0; break;
 
    case 'henry':
        $b = 10; break;
 
    // duplicate of case 'john'
    case 'julia':
        $b = 0; break;
 
    case 'jeroen':
        $b = 30; break;
       
    default:
      throw new MyException('This is an unexpected name');
}
 
?>

枚举案例的使用

PHP 内置了对枚举的支持。枚举的重要优点之一是其有限性。它们代表选项的完整集合,并且不存在其他选项。这使得检查 a 是否switch涵盖了所有可能的情况变得很容易。

<?php
 
enum formats {
    case GIF;
    case JPG;
    case PNG;
}
 
switch($a) {
    case formats::GIF:
        // doSomething() and break;
 
    case formats::PNG:
        // doSomething() and break;
         
    // We are missing one case : JPG!
 
    // Unknown cases triggers an exception lazily (only if reached)
    case formats::TIFF:
        // doSomething() and break;
 
    default:
      throw new MyException('Unknown image format');
}
 
?>

通过简单开关进行优化

PHP 7.2 引入了针对switch.

在此之前,PHP 会逐个检查每个案例,并在找到匹配值后立即停止。在 PHP 7.2 及更高版本中,当大小写值是简单文字时,PHP 会为它们设置一个查找表。然后,PHP 立即跳转到正确的情况,并绕过所有其他不匹配的情况。

<?php
 
switch($a) {
    case 1:
        // doSomething() and break;
 
    case 2:
        // doSomething() and break;
         
    default:
      throw new MyException('Unknown image format');
}
 
?>

当所有情况都是简单值时,就会发生简单切换,可以直接与传入变量进行比较。

如果开关混合了表达式和简单值,建议将简单文字放在第一个开关中switch,并将其他文字放在第二个开关中。

<?php
 
switch($a) {
    case 1:
        // doSomething() and break;
 
    case 2:
        // doSomething() and break;
         
    default:
        switch($a) {
            case $b + 2:
                // doSomething() and break;
 
        case strtolower($a):
            // doSomething() and break;
         
        default:
            throw new MyException('Unknown case');
    }
}
 
?>

以不同的方式处理它们也可能更方便,例如使用先前的条件。

总结

总之,switchPHP 中结构良好的语句可以极大地提高代码的清晰度、可维护性和性能。通过检查缺失的默认条目、消除重复的情况和代码块、利用类似枚举的结构以及优化复杂的开关,您可以确保您的语句仍然是switch任何 PHP 代码库的高效且有效的部分。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP中实用的开关命令

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP中实用的开关命令

确保 PHP 中结构良好的 Switch 命令在 PHP 中,switch语句是控制程序流程的强大工具,尤其是在处理多个条件分支时。然而,实现干净高效的转换也有其自身的障碍。这篇文章探讨了检查“switch”命令质量的基本技巧和实践,以确保
2023-10-22

Java开发时常用的相关Linux命令整理

这篇文章主要讲解了“Java开发时常用的相关Linux命令整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java开发时常用的相关Linux命令整理”吧!1.查找文件代码如下:find /
2023-06-12

nginx的开启、关闭、重启常用操作命令

这篇文章主要讲解了“nginx的开启、关闭、重启常用操作命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nginx的开启、关闭、重启常用操作命令”吧!service nginx stop关
2023-06-05

Linux关机命令的用法

这篇文章主要讲解了“Linux关机命令的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux关机命令的用法”吧!  1、关机前的操作(可以不进行)  可以使用who命令查看系统有谁在
2023-06-05

Linux中常用的关机命令有哪些

这篇文章给大家分享的是有关Linux中常用的关机命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在Linux系统中如果想要关机可以使用:shutdown、halt、poweroff、reboot命令。sh
2023-06-27

linux命令中的tar命令的用法

这篇文章主要讲解了“linux命令中的tar命令的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux命令中的tar命令的用法”吧!通过SSH访问服务器,难免会要用到压缩,解压缩,打
2023-06-09

Linux中php命令有什么用

这篇文章主要为大家展示了“Linux中php命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中php命令有什么用”这篇文章吧。Linux常用命令php命令 是流行的Web开发
2023-06-28

MySQL中的启动和关闭命令

目录一、Windws系统二、linux系统1.service命令2. /etc/init.d/mysql3.mysqld命令4.mysqld_safe命令5.mysqld_multi命令6.mysqladmin命令7.杀进程8.总结备注:测
2022-08-17

Linux中的关机命令是什么

Linux中的关机命令是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。   1.shutdown shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的
2023-06-10

Linux命令中的rpm命令怎么用

这篇文章的内容主要围绕Linux命令中的rpm命令怎么用进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux中,RPM是进行软件得安装、卸载、
2023-06-28

dos中怎么使用shutdown关机命令

这篇文章给大家分享的是有关dos中怎么使用shutdown关机命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。shutdown [-i | -l | -s | -r | -a] [-f] [-m \\compu
2023-06-09

PHP命令行shell_exec()的使用

这篇文章主要介绍“PHP命令行shell_exec()的使用”,在日常操作中,相信很多人在PHP命令行shell_exec()的使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP命令行shell_exe
2023-06-17

php中分页用到哪些命令

php中分页用到数据库查询命令、LIMIT命令、COUNT命令、ceil函数、$_GET变量和分页样式等命令。1、数据库查询命令,使用SQL查询语句来从数据库中获取需要的数据;2、LIMIT命令,用于指定每页显示的记录数量;3、COUNT命
2023-08-02

PHP中命令行扩展Readline相关函数的示例分析

小编给大家分享一下PHP中命令行扩展Readline相关函数的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!readline 扩展函数实现了访问 GNU
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录