-PHP Tips- 第8回 ifとswitch

ifとswitch、どちらを使うべき?
【Tips】ifの方が高速!
【Description】同じ変数の複数の値をチェックする場合、if~else if~elseと、swith~case~defaultの2通りが考えられます。以下のソースではifの方が高速です。しかし実際には、見通しという意味でswitchを使った方が良いと思われます。また、
if($hoge == 1){
} else if($fuga == 1){
というように違うレベル(変数)のものを1つのif構造で記述すると見通しが悪くなるので、
if($hoge == 1){
} else {
if($fuga == 1){
とするべきでしょう。

<?php
define("WORK_TIME", 10000);

function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$flag = 0;
$dummy = "";

//ifの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    if(!$flag){
        $flag = 1;
    } else if($flag == 1){
        $flag = 2;
    } else {
        $flag = 0;
    }
}
$if_time = sprintf("%.4f", getmicrotime() - $start_time);

//switchの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    switch($flag){
    case 0:
        $flag = 1;
        break;
    case 1:
        $flag = 2;
        break;
    default:
        $flag = 0;
    }
}
$switch_time = sprintf("%.4f", getmicrotime() - $start_time);
?>
<html>
<head><title>ifとswitchの比較</title></head>
<body>
ifの結果:<?php echo($if_time);?>秒<br>
switchの結果:<?php echo($switch_time);?>秒<br>
</body>
</html>