PHP.mk документација

Нумерички низи

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

language.types.numeric-strings.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека language.types.numeric-strings.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Нумерички низи

Референца за `language.types.numeric-strings.php` со подобрена типографија и навигација.

language.types.numeric-strings.php

Нумерички низи

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 исто така има концепт на leading нумерички низи. Ова е едноставно низа што започнува како нумеричка низа, проследена со какви било знаци.

Забелешка:

Секоја низа што содржи буква E (независно од големината на буквите) опкружена со броеви ќе се смета за број изразен во научна нотација. Ова може да доведе до неочекувани резултати.

Пример #1 Споредби на научна нотација

<?php
var_dump
("0D1" == "000"); // false, "0D1" is not scientific notation
var_dump("0E1" == "000"); // true, "0E1" is 0 * (10 ^ 1), or 0
var_dump("2E1" == "020"); // true, "2E1" is 2 * (10 ^ 1), or 20
?>

Низи што се користат во нумерички контексти

Кога е string треба да се процени како број (на пр. аритметички операции, int декларација на тип, итн.) се преземаат следниве чекори за да се утврди исходот:

  1. Ако string е нумерички, се решава како int ако string е низа со цел број и се вклопува во границите на int граници на типот (како што е дефинирано со PHP_INT_MAX), инаку се решава како float.
  2. Ако контекстот дозволува водечки нумерички низи и string е една, се решава како int ако водечкиот дел од string е низа со цел број и се вклопува во границите на int граници на типот (како што е дефинирано со PHP_INT_MAX), инаку се решава како float. Дополнително се креира грешка од ниво E_WARNING се креира.
  3. На string не е нумерички, фрли TypeError.

Поведение пред PHP 8.0.0

Пред PHP 8.0.0, а string се сметаше за нумерички само ако имаше leading празни места, ако имаше trailing празни места тогаш низата се сметаше за водечка нумеричка.

Пред PHP 8.0.0, кога низата се користеше во нумерички контекст, ќе ги изврши истите чекори како погоре со следниве разлики:

  • Употребата на водечка нумеричка низа би креирала E_NOTICE наместо E_WARNING.
  • Ако низата не е нумеричка, а E_WARNING се креираше и вредноста 0 ќе се вратеше.
Пред PHP 7.1.0, ниту E_NOTICE nor E_WARNING беше кренат.
<?php
$foo
= 1 + "10.5"; // $foo is float (11.5)
$foo = 1 + "-1.3e3"; // $foo is float (-1299)
$foo = 1 + "bob-1.3e3"; // TypeError as of PHP 8.0.0, $foo is integer (1) previously
$foo = 1 + "bob3"; // TypeError as of PHP 8.0.0, $foo is integer (1) previously
$foo = 1 + "10 Small Pigs"; // $foo is integer (11) and an E_WARNING is raised in PHP 8.0.0, E_NOTICE previously
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) and an E_WARNING is raised in PHP 8.0.0, E_NOTICE previously
$foo = "10.0 pigs " + 1; // $foo is float (11) and an E_WARNING is raised in PHP 8.0.0, E_NOTICE previously
$foo = "10.0 pigs " + 1.0; // $foo is float (11) and an E_WARNING is raised in PHP 8.0.0, E_NOTICE previously
?>

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.