分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

比较php中switch与if..elseif以及记录switch中的坑

发布时间:2023-09-06 02:21责任编辑:白小东关键词:暂无标签

在php中做条件判断,常用的是if和switch语句,虽然都能完成条件判断的任务,但是两者之间还是有不同的,请看代码:

 ????$b = 0; ????if( $b>=0 ){ ?????????echo ‘$b>=0‘; ?????}elseif( $b>=10 ) { ?????????echo ‘$b>=10‘; ?????}else { ?????????echo ‘$b =0‘; ?????}
 ???$b = 0; ????switch($b) { ????????case $b>=0: ?????????????echo ‘$b>=0‘; ?????????????break; ????????case $b>=10: ?????????????echo ‘$b>=10‘; ?????????????break; ?????????default: ?????????????echo ‘$b = 0‘; ???????}

代码执行的结果如下:

再来看另外一段代码

 ???$b = 0; ????switch( $b ) { ?????????case empty($b): ?????????????echo ‘$b是as‘; ????????????break; ?????????case "fs": ???????????????????echo ?‘$b是fs‘; ????????????break; ?????????default : ?????????????echo ‘这是个美丽的错误‘; ?????}

输入结果如下:

为什么会有这样的差异呢?

这是因为switch在执行的时候,如果是用不同类型的参数进行比较,会把case 条件以及参数进行类型转换,转成布尔类型,再进行下一步的比较, 比如$b=0为false, $b>=10也为false;第二段代码中的$b=0为false,"fs"会被intval转换为false,因此得到了上面我们看到的结果.
有了这个差异在这里,是不是我们尽量别用switch了?其实不然,如果简单的常量比较,使用switch不仅代码结构清晰,而且效率也比if语句高,这一点跟底层算法有关.
另外在使用switch的时候一定记得break,否则所有的代码都会被执行.就不存在判断的意义了.

比较php中switch与if..elseif以及记录switch中的坑

原文地址:https://www.cnblogs.com/MrBear/p/9923852.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved