LoginSignup
6
1

More than 3 years have passed since last update.

え? print true ? '①' : true ? '②' : '③'; って正解は①じゃないの?

Posted at

答え

php >  print true ? '①' : true ? '②' : '③';

もちろんみなさんは正解は②だとすぐわかったと思いますが、
私は、①になると思っていて、バグフィックスで30分くらいハマりました🥺

社内でもアンケートをとったら予想外だと思った人が3人/4人いたので、意外と混乱しやすい書き方だと思います。
Slack___developers_chatting___m_a_cloud___1_個の新しいアイテム.png

解説

処理の順番がわかるようにカッコをつけるとこうなります。

print (true ? '①' : true) ? '②' : '③';
  1. (true ? '①' : true)が評価されて'①'になる。
  2. '①' ? '②' : '③'こうなる。
  3. '①'trueと評価される (参考 PHP 型の比較表 https://www.php.net/manual/ja/types.comparisons.php)
  4. true ? '②' : '③'になる
  5. になる

①だと思った人の頭の中

print true ? '①' : (true ? '②' : '③');

まとめ

  • 三項演算子ネストすると混乱する人が出てくる🙋‍♂️
  • 括弧つける、インデントをつける、if文にする など工夫して読みやすくしよう
6
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1