PHPのif文をスッキリ書く!短縮形をマスターしよう

スポンサーリンク

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コードを目指しましょう!

コメント

タイトルとURLをコピーしました