php的if和switch语句效率比较

乱编乱写 4756 Views 0 Comments

在switch语句中条件只求值一次并用来和每个case语句比较,在elseif语句中条件会再次求值
如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用switch语句可能会快一些

例子:

if ($hackhp==1) {
echo "hackhp1";
} elseif ($hackhp==2) {
echo "hackhp2";
} elseif ($hackhp==3) {
echo "hackhp3";
}

以上是if代码的一个片段,在最差的状况下,也就是当$hackhp=3时,共运行了3次比较,而且每次比较都必须取出$hackhp的值一次

如果换成switch

switch ($hackhp) {
case 1: 
echo "1";
break;
case 2: 
echo "2";
break;
case 3: 
echo "3";
break;
}

只在开头switch的括号中取出$hackhp的值,然后把值与case值逐一进行比较

总结:
1.当只进行一次比较时,推荐使用if,原因很简单,此时if与switch没有本质区别,而用if代码较为简洁,省去多余字节
2.当多次纯粹的比较数字或字符时,推荐使用switch,当进行N次比较,switch只取值一次,而if……elseif则取值1<=x<=N(x为实际次数)
3.当遇到复合条件时,应该视情况而灵活运用if与switch

标签: PHP,

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
loading