php中if和switch的区别,比較php中switch與if..elseif以及記錄switch中的坑

本文探讨了PHP中if语句和switch语句在条件判断时的区别。当使用switch时,不同类型的参数进行比较会导致类型转换,这解释了为何在示例代码中出现预期之外的结果。尽管存在这种差异,但在简单常量比较的情况下,switch因其清晰的代码结构和更高的效率而被推荐。然而,使用switch时必须注意添加break,以避免所有case的连续执行。
摘要由CSDN通过智能技术生成

在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';

}

代碼執行的結果如下:

67fc31033730db4bed8d971e9d255c25.png

再來看另外一段代碼

$b = 0;

switch( $b ) {

case empty($b):

echo '$b是as';

break;

case "fs":

echo '$b是fs';

break;

default :

echo '這是個美麗的錯誤';

}

輸入結果如下:

619670308e0c3a8f756054f147ca28f5.png

為什么會有這樣的差異呢?

這是因為switch在執行的時候,如果是用不同類型的參數進行比較,會把case 條件以及參數進行類型轉換,轉成布爾類型,再進行下一步的比較, 比如$b=0為false, $b>=10也為false;第二段代碼中的$b=0為false,"fs"會被intval轉換為false,因此得到了上面我們看到的結果.

有了這個差異在這里,是不是我們盡量別用switch了?其實不然,如果簡單的常量比較,使用switch不僅代碼結構清晰,而且效率也比if語句高,這一點跟底層算法有關.

另外在使用switch的時候一定記得break,否則所有的代碼都會被執行.就不存在判斷的意義了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值