この記事の目的
条件演算子である三項演算子とnull合体演算子の使い方を理解する。
本題
1. 三項演算子
早速ですが、以下の簡単な if 文を見て下さい。
// テスト結果が合格が不合格かを取得する関数
function get_exam_result($point)
{
if ($point >= 60) {
return "合格です";
} else {
return "不合格です";
}
}
echo get_exam_result(78); // "合格です"
echo get_exam_result(40); // "不合格です"
このような単純なif文は、三項演算子を使ってもっとシンプルに記述できます。
// 三項演算子を使ってシンプルに記述
// テスト結果が合格が不合格か取得する関数
function get_exam_result($point)
{
return $point >= 60 ? "合格です" : "不合格です";
}
echo get_exam_result(78); // "合格です"
echo get_exam_result(40); // "不合格です"
このように、「 if文の結果に応じて 値A または 値B を選ぶ」というような場合には、三項演算子を使うことができます。
三項演算子の使い方をまとめると、
[条件式] ? [条件式が true だった時に選ばれる値(値A)] : [条件式が false だった時に選ばれる値(値B)];
ということになります。
三項演算子の省略形 ?:
三項演算子の真ん中(値A の部分)は省略することもできます。その場合、以下のような形になります。
[変数] ?: [値B]
変数の値が true と同等の場合は その値自身が、 それ以外の場合は 値B が選ばれます。
// 例
$hoge = 1;
echo $hoge ?: 'a'; // 1 が出力される。(1 は true と同等なため)
$moge = 0;
echo $moge ?: 'a'; // a が出力される。(0 は true と同等ではないため)
2. null合体演算子
null合体演算子は、三項演算子の「条件式」の部分が「$hoge === null」のような null かどうかを判別する条件であった場合に使うことができます。
例えば、以下のコードを見て下さい。
// あいさつのメッセージを取得する関数
function get_greet_msg($name)
{
if ($name === null) {
$name = "No Name"
}
return "{$name} さん、こんちには";
}
$name = null;
echo get_greet_msg($name); // "No Name さん、こんにちは"
$name = 'Tom';
echo get_greet_msg($name); // "Tom さん、こんにちは"
get_greet_msg()
関数に渡す引数 $name
が null だった場合には "No Name"を代入するという条件式が書かれています。
これは、null合体演算子を使ってこのようにシンプルに記述することができます。
// null合体演算子を使ってシンプルに記述
// あいさつのメッセージを取得する関数
function get_greet_msg($name)
{
$name = $name ?? "No Name"; // $name が null なら "No Name"を、null でなければその値自身を $name に代入する
return "{$name} さん、こんちには";
}
$name = null;
echo get_greet_msg($name); // "No Name さん、こんにちは"
$name = 'Tom';
echo get_greet_msg($name); // "Tom さん、こんにちは"
null合体演算子の使い方をまとめると、
[nullであるか調べたい変数] ?? [nullだった場合に選ばれる値];
ということになります(変数が null でなかった場合はその変数の値が選ばれます)。
最後に
ちなみに、三項演算子やnull合体演算子のように、条件式の比較結果に応じて値を選ぶ演算子をまとめて条件演算子と呼びます。
条件演算子を使って記述できる際は積極的に使うようにしましょう。