すぐに覚えられる!PHPで三項演算子を使う方法【初心者向け】

プログラミング初心者向けにPHPで書く三項演算子の使い方について解説しています。条件演算子とも呼ばれますが、条件分岐を行う際に役立つはずです。実際にソースコードを書いて説明しているので、すぐに覚えられるはずです。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

種類多くある演算子の中で、今回はPHPで書く三項演算子の使い方について解説しています。

条件分岐を行う際に便利なので、今後覚えておくと役に立つでしょう。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。
今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

三項演算子とは

三項演算子は、条件式の真偽によって異なった式の結果を返す演算子で、条件演算子とも呼ばれます。

ある条件式と真であった場合の式・偽であった場合の式の2つを定義し、条件式の結果によってそのいずれかの式の結果を全体の式の値とします。

 

大石ゆかり

田島メンター!三項演算子って何ですか?

田島悠介

簡単に言うと、if文と同じかな。

大石ゆかり

if文と同じなんだけど、場合によっては三項演算子で書いた方が良いとかですか?

田島悠介

そうだね。とりあえず、書き方を見てみよう!

 

三項演算子の書き方

PHPの三項演算子では、以下のように条件式が真である場合と偽である場合の式を指定します。

(条件式) ? (真式) : (偽式);

ここで条件式が真である場合は(真式)、偽である場合は(偽式)の結果が式全体の値となります。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際に三項演算子を書いてみよう

三項演算子を使用した場合の例です。

 

例1

ある変数の値を条件式に代入して、その結果が真であるか偽であるかによって異なった文字列を指定します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
      $var = 200;
      $str = ($var % 5 === 0) ? "5の倍数である":"5の倍数ではない";
      echo $var."は".$str;
    ?>
  </body>
</html>

ここでは、変数$varの値が5の倍数であれば真式の「5の倍数である」の文字列を、そうでない場合は偽式の「5の倍数ではない」$strとして最後にechoで画面に出力します。

実行した場合の結果はそれぞれ以下のように表示されます。

$varの値が5の倍数であった場合(条件式が真である場合)

真式の文字列 「5の倍数である」$strとして表示されるため、以下のようになります。

php_to_1

 

$varの値が5の倍数ではなかった場合 (条件式が偽である場合)

偽式の文字列 「5の倍数ではない」$strとして表示されるため、以下のようになります。

php_to_2

 

例2

応用で簡単なクイズを作成してみます。
まず、問題とその答えを入力するフォームのHTMLファイル(test.html)を作成します。

test.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <!-- 問題文 -->
    <p>
      以下の地名の読みは?
    </p>
    <p>
      放出
    </p>
    <!-- 入力フォーム -->
    <form action="./result.php" method="post">
      <input type="text" name="answer_data">
      <input type="submit" name="send" value="送信">
    </form>
  </body>
</html>

次にフォームに入力されたデータを受け取った側(result.php)で以下のように処理します。

result.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
      /* 入力したデータの受け取り */
      $answer_data = $_POST['answer_data'];
      /* 解答が合っているか */
      $str = ($answer_data === "はなてん") ? "正解です":"不正解です";
      /* 結果を出力 */
      echo $str;
    ?>
  </body>
</html>

入力フォームから受け取った値が正解であれば真式を、そうでない場合は偽式を画面に出力します。

(test.html)を実行し、フォームに答えを入力した場合の結果はそれぞれ以下のように表示されます。

 

正解を入力した場合

入力フォームに条件式で設定された文字列を入力し、「送信」ボタンをクリックします。

php_to_3

画面ではこのように表示されます。

受け取った文字列が正解に指定したものと同じのため、真式の方の結果の文字列「正解です」$strとして出力されます。

php_to_4

 

不正解を入力した場合

入力フォームに条件式で設定された文字列とは異なる内容を入力し、「送信」ボタンをクリックします。

php_to_5

画面ではこのように表示されます。

受け取った文字列が正解に指定したものと異なるため、偽式の方の結果の文字列「不正解です」$strとして出力されます。

php_to_6

 

おわりに

PHPで書く三項演算子について解説しました。

◯か×かといった条件分岐はif文を利用するよりも手軽に書けるので、ぜひ実際に書いてみてください。

 

大石ゆかり

条件があって、当てはまる時はクエスチョンマークのところが、そうじゃない時は、コロンの右の値を返すんですね。

田島悠介

その通り!

大石ゆかり

if文でも出来そうですね。ifには、もしって意味があるし、わかりやすいですよね。

田島悠介

そうだね。ただ、ifは基本的に分岐(ぶんき)なんだ。簡単な条件で、2つの値のうち、どちらかが返ってくる場合とかは三項演算子のほうがきれいに書けるんだよ。

 

PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。