PHPの三項演算子の使い方と注意点について

PHP

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関数が呼ばれます。
このように変数への代入や、関数を呼び出したりすることも可能です。
ですが、コードが読みづらくなるので、このような使い方も避けた方が良いかと思います。

コメント

タイトルとURLをコピーしました