PHPコーディング

PHPの三項演算子

2018年11月14日
プログラミング言語によらず、三項演算子は使ったことがないのですが、使ってみようかと調べてみました。
三項演算子って開発プロジェクトでも使ったことがないんですよね。わかりにくいから使わない方針だったのでしょうか。一度もお目にかかったことがない気がします。

使ったことがない、つまり使う習慣がない、つまりいつまで経ってもパット見てわかるようにならないので、ますます使わない、という循環になっていました。

変数自体が存在しない場合変数を初期化(空文字を代入)、
nullの場合も空文字代入あるいはそのままでもOK、
存在する場合はそのまま、
というコーディング(デフォルト値の設定)をできるだけ短く書きたいのです。

$a = $b ? $b : $c;(あるいはPHP 5.3以上なら $a = $b ?: $c;)
 $bがtrueなら$bを、falseなら$cを$aに代入します。

このソースは$bが存在しない場合Noticeが発生してしまいます。

$bが存在していないケースもある場合、
$a = $b ?? $c;
 $bがtrueなら$bを、存在しないかfalseなら$cを$aに代入します。

これでいけるじゃないと思ったのですが、この三項演算子はPHP7から導入されました。
PHP5では動きません。

自分で使うのならPHP7固定で良いのですが、不特定多数の方が使われるので、できればPHP5でも動くようにしたいです。

ならば
$a = isset($b) ? $b : "";
 $bが存在していてnullでないなら$bを、存在していないかnullなら空文字を$aに代入

ううん、実際には深い配列もあるし、短くないなぁ。
書き直す手間を考えると使うメリットはほとんどないので、使わないことにしました。

変数と配列の宣言を完璧にできれば悩むこともないのですけどね。
できるだけ宣言して、忘れてもPHPは動くので、PHPの試用に少し甘えることにしました。

使わないことにしましたが、勉強になりました。ですが使う機会がなければ次に使おうとした時はきれいに忘れているでしょう。

PHP: 比較演算子 - Manual