Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learning numeric-like string based on RFC

inouehi
September 24, 2024

Learning numeric-like string based on RFC

『RFC起点で数値らしい文字列を学ぶ』

第168回 PHP勉強会@東京
2024-09-25 19:30〜
https://phpstudy.connpass.com/event/329526/

inouehi

September 24, 2024
Tweet

More Decks by inouehi

Other Decks in Programming

Transcript

  1. 概要 文字列と数値にまつわる カテゴリ と ふるまい の話をします。 • numeric string(数値文字列) •

    leading-numeric string(先行数値文字列) • non-numeric string(非数値文字列) 4
  2. 文字列と“数値らしい”文字列 7 No 値 カテゴリ is_string is_numeric 1 “123” numeric

    string true true 2 “1.23e2” numeric string true true 3 “ 123” numeric string true true 4 “123 ” leading-numeric string true true 5 “123abc” leading-numeric string true false 6 “abc” non-numeric string true false
  3. PHPのバージョンによる挙動の違い[1] 8 1. https://3v4l.org/Htv9K No 値 カテゴリ 8系 7系以前 1

    “123” numeric string true true 2 “1.23e2” numeric string true true 3 “ 123” numeric string true true 4 “123 ” leading-numeric string true false 5 “123abc” leading-numeric string false false 6 “abc” non-numeric string false false
  4. 補足[1] “A fourth way PHP might deal with numeric strings

    is when using an integer string for an array index. An integer string is stricter than a numeric string as it has the following additional constraints: • It doesn't accept leading whitespace • It doesn't accept leading zeros (0)” “Another aspect which should be noted is that arithmetic/bitwise operators will...” 9 1. https://wiki.php.net/rfc/saner-numeric-strings#technical_background
  5. 文脈とふるまいの例 11 • 明示的な型変換 • 引数 • 文字列のオフセット • 算術演算子

    • インクリメント/デクリメント • ビット演算 • 緩やかな比較