在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