PHPでコードを書いていると、条件分岐のif
文は頻繁に使いますよね。
でも、ちょっとした条件分岐のために何行もコードを書くのは、ときには煩わしく感じるかもしれません。
そこで役立つのが、if
文の「短縮形」です!これらを使いこなせば、コードがより簡潔になり、読みやすさもアップしますよ。
今回は、主要な短縮形を具体的な例を交えながらご紹介します。
1. 最もよく使う「三項演算子 (? :)」
PHPのif-else
文を一行で記述できる便利な方法の一つが、この三項演算子です。
基本の形
(条件式) ? (条件が真の場合の値) : (条件が偽の場合の値);
この構文は、「もし〇〇ならA、そうでなければB」というふうに機能します。
コード例を見てみよう
例えば、年齢に応じて表示するメッセージを変えたい場合を考えてみましょう。
通常のif-else
文:
<?php $age = 20; $message = ""; if ($age >= 18) { $message = "成人です。"; } else { $message = "未成年です。"; } echo $message; // 出力: 成人です。 ?>
これを三項演算子で書くと、たった一行で済ませられます!
<?php $age = 20; $message = ($age >= 18) ? "成人です。" : "未成年です。"; echo $message; // 出力: 成人です。 ?>
ご覧の通り、$message
への値の代入がとてもスッキリしましたね。
この三項演算子は、変数の代入だけでなく、直接echo
文の中で文字列を組み立てる際にも大活躍します。
<?php $isLoggedIn = true; // ログイン状態を想定 echo "ようこそ、" . ($isLoggedIn ? "ユーザー様!" : "ゲスト様。"); // 出力: ようこそ、ユーザー様! ?>
2. 変数が定義されているかを確認する「Null合体演算子 (??)」
PHP 7以降で導入されたNull合体演算子 (??
) は、ある変数が「存在しない(未定義)か、またはnull
である」場合に、指定したデフォルト値を使いたいという、非常によくあるケースを簡潔に書くためのものです。
基本の形
(チェックしたい変数 ?? デフォルト値);
これは、「もし左側の変数がセットされていてnull
でなければその変数の値を使う。そうでなければ右側のデフォルト値を使う」という意味になります。
コード例を見てみよう
ウェブアプリケーションでURLパラメータ($_GET
)から値を取得する場合に、この演算子が特に役立ちます。
Null合体演算子を使わない場合:
<?php // URLが "example.com/?name=Taro" なら "Taro"、そうでなければ "名無し" を表示したい $username = "名無し"; // デフォルト値 if (isset($_GET['name'])) { // $_GET['name'] がセットされているかチェック $username = $_GET['name']; } echo $username; ?>
Null合体演算子を使う場合:
<?php // $_GET['name'] がセットされていてかつnullでなければそれを使用、そうでなければ '名無し' を使用 $username = $_GET['name'] ?? '名無し'; echo $username; // 例: URLが "example.com/?name=Taro" の場合 -> "Taro" // URLが "example.com/" の場合 -> "名無し" ?>
コードが格段に短く、そして意図が分かりやすくなりましたね!
フォームからのデータ取得やAPIレスポンスの処理など、頻繁に登場するパターンで重宝します。
3. ちょっと特殊な「ショート三項演算子 (?:)」
この「?:
」という形式も三項演算子の一種ですが、PHP 5.3以降で使えます。
これは、「条件式がtrue
と評価されるなら、その条件式自身の値を返したい」という場合に利用します。
基本の形
(条件式) ?: (条件が偽の場合の値);
これは実質的に、(条件式) ? (条件式) : (条件が偽の場合の値);
と同じ意味になります。
コード例を見てみよう
<?php $productName = "スーパーPHP"; // $productNameが真と評価される(空文字列や0でない)なら$productNameを使い、そうでなければ「不明な商品」 $displayName = $productName ?: '不明な商品'; echo $displayName; // 出力: スーパーPHP $emptyProductName = ""; $displayEmptyName = $emptyProductName ?: '不明な商品'; echo $displayEmptyName; // 出力: 不明な商品 ?>
どの短縮形を使うべき?
これらの短縮形は、あなたのPHPコードをよりスマートに、そして読みやすくするための強力な味方となるでしょう。
- 三項演算子 (
? :
): シンプルなif-else
での値の代入や、文字列の動的な生成に最適です。 - Null合体演算子 (
??
): 変数が存在するか、null
でないかをチェックし、もしそうでなければデフォルト値を設定する、という特定の状況で力を発揮します。
しかし、条件が複雑になったり、複数の処理を行いたい場合は、無理に短縮形を使わず、通常のif-else
文で書く方が、コードの可読性を保ち、将来のメンテナンスがしやすくなります。
大切なのは、あなただけでなく、チームのメンバーや未来の自分がコードを読んだときに、一目で理解できるようなコードを書くことです。
今回ご紹介した短縮形を上手に活用して、より洗練されたPHPコードを目指しましょう!
コメント