Search

検索したいワードを入力してください

2019年02月12日

【PHP入門】条件分岐のためのif文とswitch文を紹介

PHPの条件分岐に用いるif文とswitch文について、間違えやすい箇所や使い分けのポイントを、みなさんが想像しやすい題材で解説しています。論理演算子や比較演算子についても、理解できるようになります。じっくり考えながら取り組みたい方はぜひ読んでみてください。

条件分岐とは

条件分岐とは、条件を満たすかどうかで処理を変えることです。

例えば、みなさんがtwitterのような会員登録サイトを作りたいとします。ログインしている場合はメニューをだす、ログインしていない場合にはログイン画面をだす、というように処理を分けたくなるでしょう。この場合には、条件分岐を使ってプログラムを書いていくことになります。

PHPの条件分岐には、if文とswitch文があります。これから学んでいきましょう。

PHPでのif文の特徴と書き方

PHPでのif文の書き方を見てみましょう。



if (条件){
   文1;
}else{
   文2;
}

条件を満たしている場合、文1が実行され、条件を満たしていない場合は、文2が実行されます。条件分岐という言葉の通り、条件によって処理が分岐していることがわかりますね。条件には、これから学ぶ比較演算子や論理演算子が使われます。なお、文2を実行する必要がない場合は、else以降は書く必要はありません。

次からは、実際のPHPのコードで見ていきましょう。

比較演算子の使い方

比較演算子は、2つの値を比較するために用います。

例1



if($age >= 20){
echo "あなたはお酒を飲んで良い年齢です";
}

このPHPプログラムは、$ageが20以上の場合に、「あなたはお酒を飲んで良い年齢です」と表示します。「>=」の部分が比較演算子で、「以上」という意味です。例えば、$ageが21の場合は、echoが実行されます。しかし、$ageが19の場合には、echoは実行されません。
また仮に、条件の部分を「$age <= 20」と変えてみると、$ageが20以下の場合に、echoが実行されることになります。

例2



if ($dinner == 'hamburg') {
echo 'おいしそう!お肉は大好きです';
}

このPHPプログラムは、$dinnerがhamburgと等しい場合に、「おいしそう!お肉は大好きです」と表示します。「==」の部分が比較演算子で、「等しい」という意味です。
もし、$dinnerにsaladやfruitが入っていた場合には、echoは実行されず、何も表示されません。

論理演算子の使い方

論理演算子を使うと、複数の条件を組み合わせて扱うことができるようになります。

例1

例えば、ジェットコースターに乗ることのできる人を判定するPHPプログラムを考えてみましょう。



if( $age >= 6 && $height >= 120 ){
echo "あなたはこのジェットコースターに乗ることができます";
}

2つの条件「$age => 6」と「$height => 120」が入っています。2つの条件に挟まれた「&&」が論理演算子で、「両方の条件を満たす場合」という意味です。つまり、「$age => 6」と「$height => 120」の両方の条件を満たす場合に、「あなたはこのジェットコースターに乗ることができます」と表示します。

例2

今度は、美術館のような通常料金が500円だけれども、若者や高齢者は無料にするというPHPプログラムを考えてみましょう。



$price = 500;
if ($age < 18 || $age >= 65) {
$price = 0;
}

このプログラムの「||」も論理演算子で、今度は「どちらかの条件を満たす場合」という意味になります。つまり、「$age < 18」と「$age >= 65」のどちらかの条件を満たす場合に、$priceが0になります。

elseifとelseを使って複数の条件分岐をする

elseifとelseを組み合わせることで、より複雑な条件分岐も書くことができます。



$money = 10000;

if( $money >= 35000 ) {
print "海外旅行へ行く";
} else if( $money >= 10000 ) {
print "国内旅行へ行く";
} else {
print "近所の喫茶店へ行く";
}

このPHPプログラムは、何を表示するか考えてみましょう。まず、$moneyには10000が入っています。「$money >= 35000」は満たさないので、「海外旅行へ行く」は表示しません。

「$money >= 10000」は10000以上という意味で、$moneyには10000が入っているので、条件を満たします。よって「国内旅行へ行く」と表示します。

なお、すでに条件を満たしたため、最後のelseは判定しません。

if文の注意点

if文で注意した方がよいのは、論理演算子と代入演算子の誤りです。



if ($dinner = 'hamburg') {
echo 'おいしそう!お肉は大好きです';
}

このPHPプログラムは、一見問題なく見えます。しかし、$dinnerにはsaladやfruitが入っていても、「おいしそう!お肉は大好きです」と表示されてしまいます。

これは、「$dinner == 'hamburg'」と書くべきところを、「$dinner = 'hamburg'」と書いてしまっていることが原因です。

イコールが一つだと、$dinnerにhamburgを代入するという別の意味になってしまいます。

動作がおかしく、正しく条件分岐していないと思われる場合は、イコールの数があっているか?を確認するようにしましょう。

switch-case文とは

switch-case文を使うと、同じ変数を異なる値で比較し、値に応じて異なったコードを実行することができます。



switch ($i) {
case 0:
echo "iは0に等しい";
break;
case 1:
echo "iは1に等しい";
break;
case 2:
echo "iは2に等しい";
break;
case 3:
echo "iは3に等しい";
break;
case 4:
echo "iは4に等しい";
break;
}

このPHPプログラムは、$iが0と等しいときは「iは0に等しい」と表示し、
$iが1と等しいときは「iは1に等しい」と表示し、
$iが2と等しいときは「iは2に等しい」と表示し、
$iが3と等しいときは「iは3に等しい」と表示し、
$iが4と等しいときは「iは4に等しい」と表示します。
このように、全ての条件は、同じ変数である$iについて比較していることがわかります。

switch-case文とif文との違いとは?

switch-case文とif文は、ほとんど同じ機能のように思えます。何か違いがあるのでしょうか?

if文とswitch-case文の使い分けのポイント

同じ変数についてたくさんの条件がある場合は、switch-case文を使うと、if文よりも簡潔に書くことができる場合があります。

if文を使って書いたPHPプログラムと、switch-case文を使って書いたPHPプログラムを比較してみましょう。

if文を使って書いたPHPプログラム



if ($i == 0) {
echo "iは0に等しい";
} elseif ($i == 1) {
echo "iは1に等しい";
} elseif ($i == 2) {
echo "iは2に等しい";
} elseif ($i == 3) {
echo "iは3に等しい";
} elseif ($i == 4) {
echo "iは4に等しい";
}

switch文を使って書いたPHPプログラム



switch ($i) {
case 0:
echo "iは0に等しい";
break;
case 1:
echo "iは1に等しい";
break;
case 2:
echo "iは2に等しい";
break;
case 3:
echo "iは3に等しい";
break;
case 4:
echo "iは4に等しい";
break;
}

2つを比較して見ると、if文は、elseifや変数が重複して冗長に見えますね。switch-case文の方が簡潔に書けています。この例のように、同じ変数についてたくさんの条件分岐がある場合は、switch-case文を使うことを考えてみましょう。

まとめ

今回はPHPの条件分岐について紹介しました。条件分岐に用いるif文やswitch文は、比較的学習の初期に触れることが多いですが、高度なことを行なっているプログラムでも使われています

条件分岐は、これからプログラミングを学習して行く上で、多く遭遇することになるでしょう。ぜひ、条件分岐をマスターして表現できる幅を増やしていきましょう。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related