三項演算子を使ったほうがいいのかわからなかったので個人的な意見をまとめました。
まず、三項演算子についてかんたんに紹介します。
三項演算子
// $fuga = trueとなる。
$hoge = 20;
$fuga = $hoge > 0 ? true : false;
// 行っている処理は以下と同じ
$hoge = 20;
if ($hoge > 0) {
$fuga = true;
} else {
$fuga = false;
}
三項演算子は使うべき?
三項演算子は使う?使わない?の賛否両論があります。
個人的な意見としては、使って良いと思います。
ただチームでルールを決めてから使うべきです。
以下、使わないほうが良いパターンです。
三項演算子を使わないほうがいいパターン1
三項演算子を積み重ねて使う
$hoge = 20;
$fuga = $hoge > 0 ? true : false ? "a" : "b";
// 上記の結果は"a"となります。
// 想像の結果とあっていたでしょうか?
評価順をまとめるとわかりやすくなります。
$hoge = 20;
$fuga = ($hoge > 0 ? true : false) ? "a" : "b";
// 最初にカッコ内が評価され下記の式に書き換えられます。
$fuga = true ? "a" : "b";
結果分かりづらいので、使わない。
三項演算子を使わないほうがいいパターン2
Null合体演算子やエルビス演算子と一緒に使う
- Null合体演算子
$hoge = null;
$fuga = $hoge ?? "fuga";
// $fugaは”fuga”となる。
// 行っている処理は下記同じ
$hoge = null;
if (isset($hoge)) {
$fuga = $hoge;
} else {
$fuga = "fuga";
}
- エルビス演算子
$hoge = true;
$fuga = $hoge ?: false;
// $fugaはtrueになります。
三項演算子、Null合体演算子、エルビス演算子が混在した式を見ると一気に可読性が下がります。
結論
$hoge ? $fuga : $piyo
の形でしか使わない。
使うとしてもチームでルールを決めてから使う。
可読性(個人差がある)が保てる範囲で使う。