PHPの三項演算子

僕は三項演算子が好きなんです。

 

Boolean ? A : B;

(Boolean が trueの場合A、それ以外はB)

 

似たようなもので

if (Boolean) {

A;

} else {

B;

}

 

がありますね。

 

僕はこれの違いは、(分岐の意味としては同じだとは思うのですが)

if 文では処理の分岐をし、三項演算子では戻り値を分岐する。なのかなと。

 

まぁ、そこは今回は置いておいて。

 

僕は4年間Javaで三項演算子を多用してきました。

Boolean1 ? A : Boolean2 ? B : Boolean3 ? C : D;

(Boolean1の場合A、Boolean2の場合B、Boolean3の場合C、それ以外D)

 

if文で書くより書く行数も少ないのでスタイリッシュでかっこよく見えますね。

 

先日今のPHPの案件でこれを書いたのですが、

AかDの結果しか返ってきません。。。

 

Boolean判定の部分が間違っているのかと何回もトライ。

値を変えてテストするのに時間がかかるシステムなので30分くらい経過。。。

 

なんでうまくいかないんだろう・・・

 

 

やっと調べました。

 

結論から言えば、書き方が違いました。

 

(Boolean1 ? A : (Boolean2 ? B : (Boolean3 ? C : D)));

のように括弧で括らないといけなかったみたいです。

わかりづら。。。

 

改行してみます。

 

(Boolean1 ? A :

(Boolean2 ? B :

(Boolean3 ? C :

D)));

(インデントは気にしないでください)

うん、なんとなくきれいですね。

 

忘れないようにメモメモ。

コメント