🌊
PHPの便利技:三項演算子
三項演算子とは
三項演算子とは、if文の短縮形のような書き方です。
(変数) = (評価) ? (評価がtrueの場合の値) : (評価がfalseの場合の値);
if文との違いは、変数の代入(初期化)の時に使いやすいという点です。
if文
if( $foo ){
$var = true;
}else{
$var = false;
}
三項演算子
$var = $foo ? true: false;
上記のif文と三項演算子ですが、条件として評価する値 $foo
が未定義の場合は未定義エラーが発生します。その場合は、NULL合体演算子も併用すると、便利で読みやすく書くことができます。
?: ← エルビス演算子
?:
は、三項演算子の短縮形です。エルビス演算子とも言いますが、これは正式名称ではありません。エルビス・プレスリーの顔文字に似ているからだそうです。
("評価"が変数で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