php 1行比較 三項演算子使用の落とし穴

php 1行比較 三項演算子使用の落とし穴

三項演算子は、わかりますよね?

if( ~~ ){
return true;
}else{
return false;
}



return ~~?true:false;


という書き方。

これ、入れ子にすることも出来るわけ。

つまり、
if( ~ ){
return;
}else{
if( ~~ ){
return false;
}else{
return true;
}
}



これは、
return (~) ? true : (~~) ? false : true;


とは書けない!
これ、はまるから絶対!www

こう書きます。
return (~) ? true : ( (~~) ? false : true );


わかります? 一個目の比較の false 側の処理をかっこでくくった。

return (~) ? true : ( (~~) ? false : true );

構文解析がきちんと処理できないんですわ。 php のパーサーの問題かな?

なんでどこの php を使うかでも結果は不明なのだけど、一応安全のために それぞれの結果は かっこでくくるのが安全。

これで1時間も悩まないようにしましょう。<悩んだ人

スポンサーリンク