PHP・MySQL入門

ゼロからはじめるPHP・MySQL入門 第8回「if 文と switch」

ここまでの記事はこちら
 

前回は「==, !=, >, <, >=, <=, &&, ||」という比較記号を使って条件式を書く練習をしてきました。

今回はその実践編です。

比較記号を使って書いた条件式を使って「もし~ならば…する」というコードを書いていきます。

「もし~ならば…する」という処理は、プログラミングにおいて絶対に理解しておく必要がある考え方です。この処理を使わないプロジェクトはほとんどないと言っても良いくらい大切になります。

練習問題も用意しているので、読むだけではなく、ぜひ自分でコードを書きながら進めてくださいね????
 

if 文

最初に紹介するのは「もし~なら…する」という処理を書くことができる if 文です。

if (条件) { もし〜なら
 // 条件を満たした場合の処理 〜する
}

 

条件(もし~なら)の部分に書くのが、前回比較記号を使って書いた条件式です。

この条件のことを Condition(コンディション)とも言います。
 

まずは簡単な例として
変数 $num が 10 より小さければ「10より小さい値です。」と出力する
というコードを書いてみます。

<?php
$num = 9;
if ($num < 10) {
    echo "10より小さい値です。";
}
?>

 

$num の値を 0, 10, 15 など色々な数値に変えてみて下さい。
10 以上の数値の場合は何も出力されないはずです。

このように「ある条件を満たした場合だけ~する」という処理をするのが if 文です。
 

メモ

始めのうちはコードの構造をしっかりと理解するためにお勧めしませんが、慣れてきたら
if ($num < 10) echo "10より小さい値です。";
と一行で書くこともできます。

 

練習問題

$name = "山田"; という変数があるとき、$name が空っぽでない場合は $name を echo で出力するコードを書いてください。

<?php
$name = "山田";
// ここにコードを書いてください。
?>

 

答えを確認する

<?php
$name = "山田";
if ($name != "") {
    echo $name;
}
?>

 
 

if ~ else 文

if 文は条件を満たした場合のみの処理を書きましたが「条件を満たした場合・満たさなかった場合」の2つの処理を書きたい場合もあります。

そのときに使うのが if – else 文です。

if (条件) {
    // 条件を満たした場合の処理
} else {
    // 条件を満たさなかった場合
}

 

else は「〜でなければ」という意味なので、「条件に一致した場合、またはそれ以外」という処理を書くことができます。
 

簡単なコードを書いてみましょう。

<?php
$num = 30;
if ($num < 10) {
    echo "10より小さい値です。";
} else {
    echo "10以上の値です。";
}
?>

 

変数 $num が 10 より小さい場合とそうでない場合
で出力するメッセージを変えています。

$num = 30; の値を変えて、echo で出力されるメッセージを確認してみてください。
$num が 10 より小さいか 10 以上かでメッセージが変わるでしょうか?

このように「$num が 10より小さい場合、それ以外の場合」と2つの処理を書くことができるのが if – else 文です。
 

練習問題

$num = 10; という変数があるときに、$num が偶数だったら「この数字は偶数です。」奇数だったら「この数字は奇数です。」と echo で出力するコードを書いてください。
 

<?php
$num= 10;
// ここにコードを書いてください。
?>

 

答えを確認する

<?php
$num = 10;
if ($num % 2 == 0) {
    echo "この数字は偶数です。";
} else {
    echo  "この数字は奇数です。";
}
?>

 
 

if – elseif 文

さらに条件式を追加して

  • もし A なら~
  • もし B なら~
  • もし C なら~
  • それ以外の場合

という処理を書くことができるのが if – elseif 文です。
 

if – elseif 文はユーザの権限によって異なる処理をしたい時によく使います。

例えば、以下のように4種類の権限があって、それぞれ権限番号が割り振られているとします。

  • 管理者 1
  • 投稿者 2
  • 編集者 3
  • 一般 4

 

それぞれの権限によって出来ること・表示するデータなどが異なる場合に、if – elseif 文を使ってそれぞれの処理を書いていきます。

<?php
$role = 1;
if ($role == 1) {
    // 管理者だけができる処理

} elseif ($role == 2) {
    // 投稿者だけができる処理
 
} elseif ($role == 3) {
    // 編集者だけができる処理
 
} elseif ($role == 4) {
    // 一般ユーザーだけができる処理

} else {
    echo "不明なユーザーです";
}
?>

 

最後の else は特に何も処理を行わない場合は省略することができます。
 

注意ポイント
if – elseif 文を使うときに一つ注意して頂きたいのが「条件は上から一度だけ判定される」ということです。

たとえばこのようなコードがあるとします。

<?php
$num = 4;
if ($num < 5) {
   echo "5より小さい数字です。";

} elseif ($num % 2 == 0) {
    echo "この数字は偶数です。";

} elseif ($num == 4) {
   echo "この数字は4です";
}
?>

 

$num = 4; は全ての条件式に一致しますが、 1つ目の $num < 5 の条件に一致した時点で2つ目以降の判定は行われません。

if – elseif 文を使うときは、条件の優先順位を考えることも大切になります。
 
 

練習問題

$num = 3; という変数があるときに

  • $num が 5 未満なら「5 未満です」
  • $num が 5 以上 10 未満なら「5 以上 10 未満です」
  • $num が 10 以上なら「10 以上です」

と表示するコードを書いてください。
 

答え①を確認する

<?php 
$num = 3;
if ($num < 5) {
	echo "5未満です";
} elseif ($num >= 5 && $num < 10) {
	echo "5以上10未満です";
} elseif ($num >= 10) {
	echo "10以上です";
}
?>

答え②を確認する

<?php 
$num = 3;
if ($num < 5) {
	echo "5未満です";
} elseif ($num >= 5 && $num < 10) {
	echo "5以上10未満です";
} else {
	echo "10以上です";
}
?>

 
 

switch 文

if – elseif 文を少し簡単に書くことができる switch 文 という書き方もあります。
 

switch (条件) {
    case 値1:
        // 値1が条件を満たした場合
        break;
    case 値2:
        // 値2が条件を満たした場合
        break;
    default:
        // 条件を満たさなかった場合
        break;
}

 
 

if – elseif 文の例で紹介した権限によって処理を分ける例で比較してみましょう。

if-elseif 文
<?php
$role = 1;
if ($role == 1) {
    // 管理者

} elseif ($role == 2) {
    // 投稿者

} elseif ($role == 3) {
    // 編集者

} elseif ($role == 4) {
    // 一般

} else {
    // 上記以外
}
?>
switch 文
<?php
$role = 1;
switch ($role) {
    case 1:
        // 管理者
        break;
    case 2:
        // 投稿者
        break;
    case 3:
        // 編集者
        break;
    case 4:
        // 一般
        break;
    default:
        // 上記以外
        break;
}
?>

 
 

文字列を使って判定したい場合は、以下のようにクォーテーションで囲んで書きます。


<?php
$role = "管理者";
switch ($role) {
    case "管理者":
        // 処理
        break;
    case "投稿者":
        // 処理
        break;
    case "編集者":
        // 処理
        break;
    case "一般":
        // 処理
        break;
    default:
        // 処理
        break;
}
?>

 
 

if – elseif 文と switch 文のどちらを使うかは、条件式や行う処理の内容によって決めるので、絶対にどちらが良いということはありません。

まず if -elseif 文をしっかり書けるようになってから switch 文を使えるようになれば十分だと思います。現時点では「switch 文という書き方もある」ということだけ知っておいてください。
 
 

入れ子構造

if 文や if-elseif 文の中に if 文を書いて、入れ子構造にすることもできます。

入れ子構造の例

<?php
if (条件) {
    if (条件) {

    } else {

    }

}  elseif (条件) {
    if (条件) {
        if (条件) {

        }
    } elseif (条件) {

    }
} else {
    if (条件) {

    }
}
?>

 
 

いくつでも入れ子にすることができますが、このように複雑な入れ子構造になる場合は、たいていコードに無駄があったり非効率な場合が多いです。

条件式がたくさん出てきた場合は、最低限の条件式でコードを書けるように工夫することも大切になります。
 
 

まとめ

今回紹介したのは

  • if
  • if – else
  • if – elseif – else
  • switch

の4種類でした。

これもコードをどんどん書いていけば身についていくものなので、あまり心配しないでくださいね。

現時点では「if 文(もし~だったら…)の書き方」をしっかり覚えておいてください。

次回からはプログラミングにおいて if 文と同じくらい大切な「配列」について紹介していきます。
 
 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、携帯アプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

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

CAPTCHA