【PHP8】演算子周りの書き方

  •  
 
MAXIMUM に投稿

タグ

1. はじめに

PHP8を学習するに当たって、最初にややこしく感じるのは演算子周りの書き方じゃないでしょうか?
今回はそんな演算子周りについての書き方を纏めてみました。

2. 代数演算子

例えば下記のようなソースがあったとして、どういう風に出力されそうですか?
答えとしては1123になります。
++を書く位置によって足されるタイミングが変わるということで、ややこしいですね…

$counter = 0;
$counter++;
echo $counter;
echo $counter++; //表示してから増やす
echo $counter;
echo ++$counter; //増やしてから表示する

3. 比較演算子と論理演算子

次に明示的に0を入れる場合と空にした場合です。
空文字は、数値の0とは同じ扱いにならないため、falseになります。

0 == '0' // true
0 == ' ' // false

4. ビットシフト演算子

こういう書き方をして、表示するとどうなるでしょうか?

10 << 1

2進数で言う1010を1ビット左にシフトして、10100になり、これを10進数に再度直すと20になります。
ややこしいので、あまり現場では書かないかと思いますが、一応この書き方だとパフォーマンスが出るようです。

5. 演算子の優先順位

最後にどの符号が優先されるかですが、算術は文字列よりも優先度が高いです。
つまり下記ソースのような場合、合計という文字とくっつく前に、足し算が行われます。
基本的には上から順番になりますが、このような例外もあります。

$dogs = 14;
$cats = 6;
echo '合計: ' . $dogs + $cats;

6. 感想

今回の演算子周りについてはPHP8などでよくやるようなオブジェクト指向というよりは高校や大学でやるような2進数の話が多くて、ややこしいですが懐かしくもありました。
また、大規模開発だとあまりやらなさそうな書き方になりますが、工夫すればパフォーマンス向上にも繋がるというのは面白いなと思いました。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。