先輩「if文使うなんてダセープログラム書くんじゃねーよ!」

さて、4年前ぐらいにタイトルで書いたようなことを先輩に言われた訳ですが、その時はそのまま流してしまいました。
俺はSEって言ってもインフラ系でプログラムをあんまり書きません。
そんな訳で当時は何となくだけど、if文はコストがかかる(実行速度が遅くなる?)から出来るだけ使うなよ、って意味で解釈しました。
でも内心、if文使わなかったらどうやって条件分岐するんだよ!って思っていました。

最近、折角この業界にいるんだから、プログラムぐらいサラッと書ける方が
カッコイイなと思ってプログラムを書いて遊んでいた所、if文を使わない条件分岐の方法を知りました。目からウロコです。

どうやるかって言うと、「多重配列を使えばいいんです!」
はい。リピートアフタミー。
「多重配列を使えばいいんです!」

具体的にどうするかは、下に書きます。例としてジャンケンをするプログラムをPHPで書きました。
まずは、if文を使ったジャンケンプログラム。ちょっとif文を使い過ぎで大げさですがw

<?php
$my_hand = gou;
$you_hand = cho;

if ($my_hand == "gou"){
    if ($you_hand == "cho"){
        $result = "win";
    }elseif ($you_hand == "par"){
        $result = "lost";
    }else{
        $result = "darw";
    }
}elseif ($my_hand == "cho"){
    if ($you_hand == "cho"){
        $result = "darw";
    }elseif ($you_hand == "par"){
        $result = "win";
    }else{
        $result = "lost";
    }
}else{
    if ($you_hand == "cho"){
        $result = "lost";
    }elseif ($you_hand == "par"){
        $result = "darw";
    }else{
        $result = "win";
    }
}
print $result;
?>

次は、多重配列を使ったジャンケンプログラム。

<?php
$my_hand = par;
$you_hand = cho;

$janken = array('gou' => array( 'cho' => 'win', 'par' => 'lost', 'gou' => 'darw'),
                'cho' => array( 'cho' => 'darw', 'par' => 'win', 'gou' => 'lost'),
                'par' => array( 'cho' => 'lost', 'par' => 'darw', 'gou' => 'win')
                );

$result = $janken[$my_hand][$you_hand];

print $result;
?>

おおー。これを知った時はちょっと感動しました!プログラミングおもしれー。
アルゴリズムやデータ構造の勉強してみよっかな〜。