PHPの三項演算子(条件演算子)の使い方と注意点について書いています。
PHPの三項演算子の公式ドキュメントは下記になります。
PHP: 比較演算子 - Manual
PHPの三項演算子の使い方
PHPの三項演算子は、条件式で2つの値のどちらかを返してくれる構文です。
例えば、下記のような式の場合ですが…
$color = 'red';
$result = ($color == 'red') ? '赤色' : 'その他の色';
?
の左側が条件になり、右側が返す値です。
($color == 'red')
がtrue
になる場合は”赤色”が返ってきて、false
になる場合は”その他の色”が返ってきます。
上記では、$color = "red"
になっているので、true
となり、$result
には”赤色”が入ります。
if文に似ていますね。
実際の使いどころとしては…
連想配列のデータがあるか確認して、ある場合は取り出すなどの処理で使ったりします。
$param1 = isset($test["param1"]) ? $test["param1"] : null;
$param2 = isset($test["param2"]) ? $test["param2"] : null;
$param3 = isset($test["param3"]) ? $test["param3"] : null;
そのまま取り出したら、値がない場合は警告などが出るところですが、三項演算子を挟むことで安全に取り出せます。
三項演算子を使うときの注意点
公式ドキュメントにも書いてありますが、三項演算子を使う時には、積み重ねて使用することを避けた方がいいです。
例えば、下記のように三項演算子を使用した場合です。
$color = 'red';
$food = true;
$fruit = 'red';
$result = ($color == 'red') ? (($food == true) ? (($fruit == 'red') ? '林檎' : 'それ以外の果物') : '果物でない') : '赤色でない';
echo $result;
このように、重ねて使うとコードが読みづらくなり、何をやっているか読み取りづらくなります。
三項演算子を使用する時には、重ねずに1つだけで使うことをオススメします。
if
のように使用することもできます。
function test() {
echo "test";
}
function other() {
echo "other";
}
$color = 'red';
$fruits = '';
($color == 'red') ? $fruits = 'apple' : $fruits = 'other';
($color == 'red') ? test() : other();
結果として、$fruits
には”apple”が格納されて、test関数が呼ばれます。
このように変数への代入や、関数を呼び出したりすることも可能です。
ですが、コードが読みづらくなるので、このような使い方も避けた方が良いかと思います。
コメント