Числові рядки

Π£ PHP рядок (string) Π²Π²Π°ΠΆΠ°Ρ”Ρ‚ΡŒΡΡ числовим, якщо ΠΉΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½Π° Ρ–Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΡƒΠ²Π°Ρ‚ΠΈ як Ρ†Ρ–Π»Π΅ (int) число Π°Π±ΠΎ число Π· ΠΏΠ»Π°Π²Π°ΡŽΡ‡ΠΎΡŽ Ρ‚ΠΎΡ‡ΠΊΠΎΡŽ (float).

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π· PHP 8.0.0:

WHITESPACES      \s*
LNUM             [0-9]+
DNUM             ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM    (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
INT_NUM_STRING   {WHITESPACES} [+-]? {LNUM} {WHITESPACES}
FLOAT_NUM_STRING {WHITESPACES} [+-]? ({DNUM} | {EXPONENT_DNUM}) {WHITESPACES}
NUM_STRING       ({INT_NUM_STRING} | {FLOAT_NUM_STRING})

Π£ PHP Ρ‚Π°ΠΊΠΎΠΆ Ρ” концСпція ΠΏΡ€Π΅Ρ„Ρ–ΠΊΡΠ½ΠΎΡŽ числового рядка. Π¦Π΅ рядок, який ΠΏΠΎΡ‡ΠΈΠ½Π°Ρ”Ρ‚ΡŒΡΡ як числовий Ρ– ΠΏΡ€ΠΎΠ΄ΠΎΠ²ΠΆΡƒΡ”Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡŒ-якими Ρ–Π½ΡˆΠΈΠΌΠΈ символами.

ЗауваТСння :

Π‘ΡƒΠ΄ΡŒ-який рядок, Ρ‰ΠΎ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ E (Π±Π΅Π· урахування рСгістру), ΠΎΠ±ΠΌΠ΅ΠΆΠ΅Π½Ρƒ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ, ΡΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ як число, Π²ΠΈΡ€Π°ΠΆΠ΅Π½Π΅ Ρƒ Π½Π°ΡƒΠΊΠΎΠ²Ρ–ΠΉ Π½ΠΎΡ‚Π°Ρ†Ρ–Ρ—. Π¦Π΅ ΠΌΠΎΠΆΠ΅ призвСсти Π΄ΠΎ нСсподіваних Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ–Π².

Loading...

Рядки, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ Π² числових контСкстах

Коли рядок Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ використовувати як число (Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π½Ρ– ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–Ρ—, дСкларація Ρ†Ρ–Π»ΠΎΠ³ΠΎ Ρ‡ΠΈΡΠ΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ, Ρ– Ρ‚. Π΄.), Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ наступний Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Ρ–ΠΉ:

  1. Π―ΠΊΡ‰ΠΎ рядок числовий, прСдставляє Ρ†Ρ–Π»Π΅ число Ρ– Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΈΡ‰ΡƒΡ” максимально допустимого значСння для Ρ‚ΠΈΠΏΡƒ int (Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΎΠ³ΠΎ Π²**PHP_INT_MAX**), Π²ΠΎΠ½Π° Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚ΠΈΠΏΡƒ int. Π†Π½Π°ΠΊΡˆΠ΅ Π²ΠΎΠ½Π° Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚ΠΈΠΏΡƒ float.
  2. Π―ΠΊΡ‰ΠΎ Π² Π·Π°Π΄Π°Π½ΠΎΠΌΡƒ контСксті ΠΌΠΎΠΆΠ½Π° використовувати прСфіксний числовий рядок, Ρ‚ΠΎ, якщо ΠΏΠΎΡ‡Π°Ρ‚ΠΎΠΊ рядка прСдставляє Ρ†Ρ–Π»Π΅ число Ρ– Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΈΡ‰ΡƒΡ” максимально допустимого значСння для Ρ‚ΠΈΠΏΡƒ int (Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΎΠ³ΠΎ Π²**PHP_INT_MAX), Π²ΠΎΠ½Π° Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚ΠΈΠΏΡƒ int. Π†Π½Π°ΠΊΡˆΠ΅ Π²ΠΎΠ½Π° Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚ΠΈΠΏΡƒ float. Π’Π°ΠΊΠΎΠΆ, Ρƒ Ρ†ΡŒΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, Π²ΠΈΠ΄Π°Ρ”Ρ‚ΡŒΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° рівняE_WARNING**
  3. Π―ΠΊΡ‰ΠΎ рядок Π½Π΅ числовий - Π²ΠΈΠΊΠΈΠ΄Π°Ρ”Ρ‚ΡŒΡΡ винятокTypeError

ΠŸΠΎΠ²Π΅Π΄Ρ–Π½ΠΊΠ° Π΄ΠΎ PHP 8.0.0

Π”ΠΎ PHP 8.0.0 рядок вваТався числовим лишС Ρƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, якщо Π²Ρ–Π½ починалася Ρ–Π· ΠΏΡ€ΠΎΠ±Ρ–Π»ΠΎΠ²ΠΈΡ… символів. Π―ΠΊΡ‰ΠΎ Π²ΠΎΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΡƒΠ²Π°Π»Π°ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½ΠΈΠΌΠΈ символами - Π²ΠΎΠ½Π° вваТалася ΠΏΡ€Π΅Ρ„Ρ–ΠΊΡΠ½ΠΎΡŽ Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΡŽ.

Π”ΠΎ PHP 8.0.0, ΠΊΠΎΠ»ΠΈ рядок Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ використовувати як число, використовувався Ρ‚ΠΎΠΉ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‰ΠΎ описаний Π²ΠΈΡ‰Π΅, Π°Π»Π΅ Π· дСякими відмінностями:

  • Використання прСфіксного числового рядка Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π»ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ рівня**E_NOTICE, Π° Π½Π΅E_WARNING**
  • Π―ΠΊΡ‰ΠΎ рядок Π½Π΅ Π±ΡƒΠ² числовим, викликалася ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° рівня**E_WARNING**, Π° сам рядок приводився Π΄ΠΎ

Π”ΠΎ PHP 7.1.0 Π½Π΅ викликалася ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° рівня E_NOTICE, Π½ΠΈ**E_WARNING**

Loading...