<分区>
Possible Duplicate:
is “else if” faster than “switch() case” ?
我最近遇到了很多情况,我的条件非常简单,需要分支应用程序流程。完成我正在做的事情的“最简单”方法只是一个普通的旧 if
/elseif
语句:
if($value == "foo") {
// ...
} elseif($value == "bar") {
// ...
} elseif($value == "asdf" || $value == "qwerty") {
// ...
}
...但我也在考虑类似的事情:
switch($value) {
case "foo":
// ...
break;
case "bar":
// ...
break;
case "qwer":
case "asdf":
// ...
}
这看起来可读性有点差,但也许它的性能更高?但是,当条件语句中的“或”表达式越来越多时,switch 语句似乎更具可读性和实用性:
switch($value) {
case "foo":
// ...
break;
case "bar":
case "baz":
case "sup":
// ...
break;
case "abc":
case "def":
case "ghi":
// ...
break;
case "qwer":
case "asdf":
// ...
}
我还看到了使用数组和函数对代码流进行分支的选项:
function branch_xyz() {/* ... */}
function branch_abc() {/* ... */}
function branch_def() {/* ... */}
$branches = array(
"xyz"=>"branch_xyz",
"abc"=>"branch_abc",
"def"=>"branch_def"
);
if(isset($branches[$value])) {
$fname = $branches[$value];
$fname();
}
这最后一个选项可能还具有跨多个文件分发的好处,尽管它非常丑陋。
在性能、可读性和易用性方面,您认为哪个优势最大且折衷最少?