PHPで使用する三項演算子とは?【基礎知識】書き方から注意点まで詳しく解説

PHPでプログラミングを行う人にとって、三項演算子はコードの可読性や効率に大きく影響する存在といえます。
これは条件分岐を短く書ける便利な構文なのですが、知らないうちにエラーや可読性の低下を招く可能性もあるでしょう。
本記事では三項演算子の基礎と応用をサンプルコードとともに紹介します。またエルビス演算子やNull合体演算子も登場し、処理をシンプルにまとめるコツを学ぶことも可能になるでしょう。
知らないまま使うと危険な落とし穴もあるため、注意点も意識しつつチェックしてほしいと思います。
PHPで使用する三項演算子とは?
PHPで使用する三項演算子は
条件 ? 真の場合 : 偽の場合
のように書きます。
もし条件式が当てはまれば真の部分が実行され、そうでなければ偽の部分が実行されます。
読み方としては「もし条件式が真ならば〇〇、そうでなければ△△」というイメージでしょう。
if文と比べるとコードが短くまとまるため、場合によっては僅かに高速になることもあります。
ただし読みやすさを損ねる可能性もあるため、どちらを使うかは状況や好みによって判断するのが大切でしょう。
以下の記事では、PHPの練習ができるサイトを紹介しています。三項演算子を試すときにも使えるので、ぜひ参考にしてください。
「なんか今の仕事合わないな・・・」
「IT業界に転職してみたいなぁ・・・」
という方、DMMが運営する「WEBCAMP エンジニア転職」をご検討してみてはいかがですか?

「WEBCAMP エンジニア転職」では最短12週間でITエンジニアを目指すことが可能です!
WEBCAMPの卒業生は転職後に年収もUP!(例:年収250万円→500万円)
しかも今なら受講料の最大70%が給付金として支給されます。
DMM WEBCAMPは経済産業省・厚生労働省が認定した専門実践教育訓練給付金制度の対象です
三項演算子の基本の使い方・書き方
この章では、三項演算子の基本的な使い方・および書き方について、サンプルコードを含めてご紹介します。
サンプルコード①
以下は、$scoreが60以上のときは「合格」と表示し、そうでないときは「不合格」と表示する例を、三項演算子で書いています。
<?php
$score = 80;
$result = ($score >= 60) ? "合格" : "不合格";
echo "結果: " . $result;
?>
実行結果:
合格
$scoreの値は80、60以上なので、合格となります。
サンプルコード②
以下は$ageが20未満なら「未成年」と判定し、20以上なら「成人」と判定する内容です。
<?php
$age = 18;
$category = ($age < 20) ? "未成年" : "成人";
echo "あなたは " . $category . " です";
?>
実行結果:
あなたは 未成年 です
$ageは18なので、実行結果は「未成年」となりました。
三項演算子を使う際の注意点
この章では、三項演算子を使う際の注意点として、以下の項目を解説していきます。
- echoを記述することで起きるエラー
- ネストすることで起きる問題
- 速度だけでなく可読性も意識する必要がある
echoを記述することで起きるエラー
三項演算子を使うときに、気をつけなければならないのが「echo」を組み合わせる場合です。
三項演算子は条件式の結果を返すため、式全体が「値」として処理されますが、echoは出力専用の命令であり、返り値を持たないためエラーになります。
間違った例は以下のとおりです。
<?php
$value1 = 10;
$value2 = 20;
// エラーになる例
$result = $value1 < $value2 ? echo 'value1が小さい' : echo 'value2が小さい';
?>
実行結果:
PHP Parse error: syntax error, unexpected 'echo'
このエラーは、echoが返り値を持たないために発生します。三項演算子は「値」を返す仕組みなのに、echo自体は何も返せないためです。
一方、以下は正しい書き方です。
<?php
$value1 = 10;
$value2 = 20;
$result = $value1 < $value2 ? 'value1が小さい' : 'value2が小さい';
echo $result;
?>
実行結果:
value1が小さい
上記は三項演算子の結果を変数に代入し、それをechoで出力する方法です。
echoを使いたい場合は、三項演算子の中で直接使用せず、printに変更するか、変数に代入してからechoする方法を取りましょう。
無理にechoを組み込むとエラーになるだけでなく、コードの可読性も下がるので、できるだけシンプルな形で使うように心がけると良いでしょう。
>>DMM WEBCAMP PHP/Laravelコースの詳細はこちら
ネストすることで起きる問題
三項演算子を多重にネストすると、処理の流れが分かりにくくなり、可読性を損ねることがあります。
括弧の付け忘れなどでエラーを引き起こす可能性もあるため、ネストはなるべく必要最小限に留めるほうがよいでしょう。
<?php
// ネストが深くて読みにくい例
$score = 70;
$result = ($score >= 80)
? "A"
: (($score >= 60)
? "B"
: "C");
echo "成績: " . $result;
?>
実行結果:
成績: B
上記のコードは実行こそできますが、ネストが深いため、一見しただけでは条件の判定基準が分かりづらいでしょう。
三項演算のネストはアリ?ナシ?
ネスト自体が完全に悪いわけではありませんが、可読性を大きく損なう恐れがあります。
以下のような工夫をすると良いでしょう。
- どうしても複雑になる場合は、if文を使って可読性を優先する
- 条件ごとに変数へ代入するなど、段階的に分けて書く
- 括弧を増やすなどして、分岐の境界を明確にする
三項演算子はあくまでコードを短くするための手段なので、読み手に負担をかける書き方は避けるほうが望ましいです。
速度だけでなく可読性も意識する必要がある
三項演算子は、if文よりもわずかに高速になる場合がありますが、速度差はそれほど大きくないとされています。
高トラフィックな場面で小さな積み重ねが重要になるケースもありますが、多くの場合は可読性を重視するほうがトラブルを防げるでしょう。
処理速度と同じくらい、コードを保守しやすくするための見やすさを意識することが重要といえます。
【応用編】エルビス演算子・Null合体演算子

三項演算子には、便利な応用テクニックも存在します。
その中でもエルビス演算子やNull合体演算子は、値が設定されていない場合の処理を簡潔に書ける方法として知られています。
ここでは、それぞれの特徴や使い方をサンプルコードとともに紹介します。
検査関数(isset)を使った値の確認方法
PHPで変数が存在するかどうかを確認する際に使われるのが、検査関数isset()です。
この関数は、変数が定義されていてnull以外の値を持つ場合にtrueを返し、そうでない場合はfalseを返します。
変数がセットされていない場合のエラーを防ぐために役立つ関数です。
サンプルコードと実行結果
<?php
$name = "山田";
// issetで変数が存在するか確認する
if (isset($name)) {
echo "名前は " . $name . " です。";
} else {
echo "名前は設定されていません。";
}
?>
実行結果:
名前は 山田 です。
この例では、変数$nameがセットされているので、正常に名前を出力できます。
もし$nameを定義しなければ「名前は設定されていません。」と表示されるでしょう。
三項演算のエルビス演算子とは?
エルビス演算子は、?:という簡潔な書き方で「値が存在するか確認する」処理を行える三項演算子の一種です。
通常の三項演算子を少し省略できる形で、左側の値がnullやfalseであれば右側の値を返す仕組みになっています。
サンプルコードと実行結果
<?php
$username = null;
// エルビス演算子を使って名前を確認する
echo $username ?: "名前が設定されていません。";
?>
実行結果:
名前が設定されていません。
この例では、$usernameがnullなので右側の「名前が設定されていません。」が出力されます。
エルビス演算子はシンプルに書ける点が便利ですが、PHP 8.0以降では非推奨となり、代わりに次章で紹介する「Null合体演算子」を使うことが推奨されます。
三項演算のNull合体演算子とは?
Null合体演算子(??)はPHP 7.0以降で追加された新しい演算子です。これは変数が存在しないか、nullである場合にデフォルトの値を返すための仕組みです。
isset()の確認と似ていますが、記述が非常に簡潔になります。
サンプルコードと実行結果
<?php
$user = null;
// Null合体演算子を使って確認する
echo $user ?? "ユーザーが未設定です。";
?>
実行結果:
ユーザーが未設定です。
このように$userがnullであるため、右側のメッセージが表示されます。
isset()と同じように使えるため、コードをすっきりとまとめられます。
ここまで紹介したとおり、エルビス演算子とNull合体演算子は用途が似ていますが、推奨されているのは後者のNull合体演算子なので、積極的に活用していきましょう。
以上、三項演算子について紹介してきましたが、より深く学びたい方は書籍の購入もおすすめです。以下の記事を参考に、自分に合った書籍を見つけてください。
まとめ:正しく使い分けて、三項演算子を効果的に活用しよう
三項演算子はPHPのコードを短く書ける便利なツールですが、使い方を間違えるとエラーや可読性の低下を招いてしまいます。
この記事で紹介した基本の使い方やエルビス演算子、Null合体演算子を上手に活用すれば、コードをよりシンプルに整理できるでしょう。
PHPを効率的に使いこなすために、シチュエーションに応じて正しく使い分けることを意識してほしいと思います。
とはいえ、「記事を読んだだけでは理解が深まらない…」と悩む方も多いと思います。
そのような方は、DMM WEBCAMPが運営するPHP/Laravelコースを試してみてはいかがでしょうか。
こちらのコースはPHPとLaravelを基礎から学び、ユーザ機能や管理機能を持つWebサービスを実際に開発できる実践的なカリキュラムとなっています。
週2回のメンタリングや無制限の質問サポートもあるので、初心者でもしっかりとスキルを身につけられるでしょう。
まずはどんな悩みでも構いませんので、以下のリンクから簡単30秒の無料相談を活用してみてはいかがでしょうか?