🌊

PHPの便利技:三項演算子

2023/01/15に公開約900字

三項演算子とは

https://www.php.net/manual/ja/language.operators.comparison.php

三項演算子とは、if文の短縮形のような書き方です。

(変数) = (条件) ? (条件がtrueの場合の値) : (条件がfalseの場合の値);

if文との違いは、変数の代入(初期化)の時に使いやすいという点です。

if文

if( $foo ){
    $var = true;
}else{
    $var = false;
}

三項演算子

$var = $foo ? true: false;

?: ← エルビス演算子

?: は、三項演算子の短縮形です。エルビス演算子とも言いますが、これは正式名称ではありません。エルビス・プレスリーの顔文字に似ているからだそうです。

(条件が変数でtrueなら、その値が入る) = (条件) ?: (条件の変数がfalseの場合の値);

NULL合体演算子https://zenn.dev/phpbeginners/articles/e58863231a8b0c)との違いは、未定義の値を評価すると未定義エラーが発生します。

index.php
<?php
error_reporting(E_ALL);
$var = $undefined ?: 'default value'; // ← $undefinedは、未定義エラーになります
var_dump($var);
?>

変数が未定義の場合の対応をしつつ、省略形の三項演算子を使うには、NULL合体演算子の複合技を使います。

index.php
<?php
error_reporting(E_ALL);
$var = ($undefined ?? null) ?: 'default value'; // ← $undefinedが未定義の場合はNULLが代入されます
var_dump($var);
?>

Discussion

ログインするとコメントできます