前置き
三項演算子を省略できる書き方で、エルビス演算子「?:」というものがありますが、
自分が間違えた使い方をしていた為、共有したいと思い記事にしました。
エルビス演算子の間違えた使い方
$a = 15;
$b = $a === 15 ?: 17;
私は、この$bの期待値としては「15」であると思っていました。
しかし、この$bの値は「true」になっていました。
これは「$a === 15」の結果がtureの為、三項演算子の条件式的には「$a === 15」を返します。
言い換えると下記のようなコードに置き換えることができます。
$a = 15;
$b = $a === 15 ? $a === 15: 17;
これを見ると$bの値は「true」になるのがわかります。これと同じ現象が起きているというわけです。
エルビス演算子の正しい使い方
$a = 15;
$b = $a ?: 17;
//言い換えると
$a = 15;
$b = $a ? $a : 17;
$aがtrueと同等の場合は「15」、それ以外の場合は「17」になります。それ以外の場合というのは「false, null, 0, '', [] 」あたりです。
まとめ
エルビス演算子について紹介しました。
正しく使うとコードが短くなる、わかりやすくなる、読みやすくなる、といったメリットがあります。
是非使ってみてはいかがでしょうか?
参考文献
【PHPなど】エルビス演算子 ?: 本当にエルビス・プレスリーだった【画像あり】
https://qiita.com/ito_gen/items/7650454fbb27baefc1f7
PHPの便利な演算子でコードを短くしよう!
https://learningbox.co.jp/2021/06/15/blog_php-code/