- 公開日: 2017年08月17日
phpの三項演算子の使い方!メリットを解説
みなさんは三項演算子を普段使用しているでしょうか。私はこの三項演算子は便利だと感じており、かなり使用頻度の高い演算子の一つとなっております。
本日は、PHPでリファクタリングを行う際にとても役立つ、三項演算子についてわかりやすく解説していきたいと思います。
三項演算子とは
三項演算子は、名前に三項や、演算子と入っているように、3つの項目を使って演算を行うことを指します。
基本的には、if文の省略形として利用する場合がほとんどです。if文でいうところの、if〜elseと同等の処理を行うことができます。ただし、if〜else if〜elseのような記述だと省略できないので注意しましょう。
三項演算子の書き方
三項演算子の書式は下記になります。
条件式 ? 式A : 式B
条件式を評価し、true(真)であれば式A、false(偽)であれば式Bを返します。
if〜elseの式と同じようなことを1行で記述できるためリファクタリングがとても捗りますね。
if ($a > $b) {
echo "aはbより大きい";
} else {
echo "aはbより小さいか、もしくは同じ値";
}
上記のようなif文を下記のようにすっきりと記述できます。
$a > $b ? "aはbより大きい" : "aはbより小さいか、もしくは同じ値";
また、三項演算子の結果は変数に代入する事が可能です。
$result = $cond1 && $cond2 ? "どちらもtrue" : "どちらか一方、または両方がfalse";
上記のように&&(and)や||(or)といった、論理演算子も利用することが可能です。ここでは使用しておりませんが、等号や不等号といった比較演算子も利用可能です。
三項演算子のメリット
三項演算子のメリットを語る前に、まずデメリットを紹介します。
デメリット
デメリットとしては、「可読性が下がる」これしか無いのではないでしょうか。 ただ、これはあまりにも長すぎる記述や複雑な計算を行う場合にはそうかもしれませんが、私としては使い方さえ誤らなければ、可読性は下がらないと考えています。なのでこれから紹介するメリットと比べると、デメリットは気になりません。
変数の宣言と式の展開を同時にできる
例えば下記のようなプログラムがあったとします。
$result = '';
if ($a > $b) {
$result = "aはbより大きい";
} else {
$result = "aはbより小さいか、もしくは同じ値";
}
echo $result;
まず$resultを宣言し、条件分岐した後に結果をechoで出力するといったプログラムです。これは、最終的にechoで$resultを出力させたいがために、$resultという変数を宣言しています。
よって、上記のプログラムは三項演算子を使うことで下記のように記述することができます。
$result = $a > $b ? "aはbより大きい" : "aはbより小さいか、もしくは同じ値";
echo $result;
上記のように、変数の宣言と式の展開を同時に行うことができ、結果としてかなり行数を短く記述できます。
演算結果をメソッドの引数にできる
$result = '';
if ($cond1 && $cond2) {
$result = "どちらもtrue";
} else {
$result = "どちらか一方、または両方がfalse";
}
original_method($result);
上記は、条件分岐の結果をoriginal_method()の引数としていますが、三項演算子を使用することで、下記のように記述できます。
original_method($cond1 && $cond2 ? "どちらもtrue" : "どちらか一方、または両方がfalse");
上記のように&&(and)や||(or)といった、論理演算子も利用することが可能です。ここでは使用しておりませんが、等号や不等号といった比較演算子も利用可能です。
何より、記述が短くシンプルである
これに尽きるかと思います。記述が短いということは、ソースコードの記述量が減ります。大げさかもしれませんが、記述量が少ないことは不具合の発生確率も減り、保守性が高まることに繋がります。
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがだったでしょうか。三項演算子は使いこなせれば、今までif〜elseと記述していた箇所をとても短く簡潔に記述することが可能になります。ぜひどんどん利用して慣れていきましょう!
- この記事を書いた人
- ベンジャミン吉澤