マジカルインクリメントと指数表記
by
tsuda.a
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
マジカルインクリメントと 指数表記 PHP勉強会in広島 vol.2 LTDD 2024-12 #1 @tsuda_ahr
Slide 2
Slide 2 text
PHP には • マジカルインクリメントという機能があるらしい
Slide 3
Slide 3 text
マジカルインクリメントとは • 文字列に対してインクリメント演算子を適用すること。
Slide 4
Slide 4 text
試してみる
Slide 5
Slide 5 text
結果 https://onlinephp.io/
Slide 6
Slide 6 text
便利! • ですよね?
Slide 7
Slide 7 text
よしもっとインクリメントしよう!
Slide 8
Slide 8 text
結果
Slide 9
Slide 9 text
何が起こった? • わかるひと?
Slide 10
Slide 10 text
結果をさかのぼってみる
Slide 11
Slide 11 text
なぜ? • 2024E0 の次が 2024E1 (=期待値) ではなく、2025 なのか?
Slide 12
Slide 12 text
指数表記 • 数値リテラル(定数)は、 2024×100 (10の0乗) という表記を 2024E0 と書くことができる。
Slide 13
Slide 13 text
つまり • 2024E0 は 2024×100 = 2024×1 = 2024 となる。 • 2024 をインクリメントすると、2025 になる。
Slide 14
Slide 14 text
気を付けよう。 • マジカルインクリメントを使用する場合は、うっかり数値で評価されてしまう 文字列にならないことを検証しておこう。 • そもそもマジカルインクリメントは使わないほうがトラブルがなくて良いか も?
Slide 15
Slide 15 text
ちなみに • PHP5 までは、16進も数値評価していました。 (PHP7から評価しないように変更)
Slide 16
Slide 16 text
試してみる
Slide 17
Slide 17 text
PHP5 ではこうなる
Slide 18
Slide 18 text
PHP7 ではこう。
Slide 19
Slide 19 text
こちらからは以上です。 • ご利用は計画的に(ぇ
Slide 20
Slide 20 text
と、いいたいところですが・・・ • マジカルインクリメントは PHP 8.3 から非推奨らしいです。 https://www.php.net/manual/ja/migration83.deprecated.php
Slide 21
Slide 21 text
ということで、str_increment を使いましょう。
Slide 22
Slide 22 text
指数として評価されません。
Slide 23
Slide 23 text
Any Question? • 間違いとかあればご指摘ください。