次回より『ヒデログ』とご検索ください

【php初心者】3分で分かるswitch文の使い方(if文との違い)

php

switch文の使い方をif文と比べながら説明します。

switchとifを比較

数字

数字でのif文とswitch文の違いを見てみましょう。

if文:数字

<?
$a=10;
if($a==10){
    echo '$aは10です。';
elseif($a==20){
    echo '$aは20です。';
else{
    echo '$aは10でも20でもないです。';
}
>

swtich文:数字

<?
$a=10;
switch($a){
    case 10:
        echo '$aは10です。';
        break;
    case 20:
        echo '$aは20です。';
        break;
    dfault:
        echo '$aは10でも20でもないです';
}
>

文字列

文字列でも同様のことが出来ます。

if文:文字列

<?
$a='apple';
if($a=='apple'){
    echo '$aはappleです';
elseif($a=='banana'){
    echo '$aはbananaです';
else{
    echo '$aはappleでもbananaでもないです';
}
>

switch文:文字列

<?
$a='apple';
switch($a){
    case 'apple':
        echo '$aはappleです。';
        break;
    case 'banana':
        echo '$aはbananaです。';
        break;
    dfault:
        echo '$aはappleでもbananaでもないです';
}
>

caseにbreakをつけないと

<?
$a='banana';
switch($a){
    case 'apple':
        echo '$aはappleです。'."\n";//改行のために「."\n"」をつけていますが本質は変わりません。
    case 'banana':
        echo '$aはbananaです。'."\n";
    default:
        echo '$aはappleでもbananaでもないです'。;
}
>
実行結果
$aはbanana。
$aはappleでもbananaでもないです。

というように全てをじっこうします。ですのでswtich文はcaseで判定された後マッチするものがあると、それ以降の分も実行してしまいます。

なぜswitch文があるのか

switch文はif文に比べて若干パフォーマンスが上がります。なぜならswitchは最初の式だけを評価してcaseに渡すからです。

ただ、ほんの少しなので気にするレベルではありせん。何百万回もループで計算する場合はパフォーマンスを上げるのに導入してもいいでしょう。

エンジニアの中にはswitchぶんを嫌う人もいますのでチーム開発の時はif文を使うのが無難です。

まとめ

switch文の使い方をif文との違いを比べながら見てきました。またなぜswitch文があるのか解説しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です