Целые числа могут специфицироваться в десятеричной (база 10), 16-ричной (база 16) или 8-ричной (база 8) нотации с необязательным знаком (- или +).Если вы используете 8-ричную нотацию, первым символом числа должен быть 0 (нуль), для 16-ричной нотации первыми символами числа будут 0x.
Пример. Целочисленные литерал:
$a = 1234; # 10-ричное число
$a = -123; # отрицательное число
$a = 0123; # 8-ричное число (экивалентно 10-ричному 83)
$a = 0x1A; # шестнадцатеричное число (экивалентно 10-ричному 26)
Размер integer зависит от платформы, хотя максимальное значение около 2 миллионов является обычным (то есть 32-битное знаковое). PHP не поддерживает беззнаковые integer.
Переполнение
Если вы специфицируете число за рамками диапазона типа integer, оно будет интерпретировано как float. Также, если вы выполняете операцию, которая даёт в результате число за пределами диапазона типа integer, будет возвращено float.
$large_number = 2147483647;
var_dump($large_number);
// на выходе: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// на выходе: float(2147483648)
// это подходит также для специфицированных 16-ричных чисел:
var_dump( 0x80000000 );
// на выходе: float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number);>
// на выходе: float(50000000000)
В PHP нет операции целочисленного деления. 1/2 даст float 0.5.
var_dump( 25/7 );
// на выходе: float(3.5714285714286)
$a = 1234; # 10-ричное число
$a = -123; # отрицательное число
$a = 0123; # 8-ричное число (экивалентно 10-ричному 83)
$a = 0x1A; # шестнадцатеричное число (экивалентно 10-ричному 26)
Размер integer зависит от платформы, хотя максимальное значение около 2 миллионов является обычным (то есть 32-битное знаковое). PHP не поддерживает беззнаковые integer.
Переполнение
Если вы специфицируете число за рамками диапазона типа integer, оно будет интерпретировано как float. Также, если вы выполняете операцию, которая даёт в результате число за пределами диапазона типа integer, будет возвращено float.
$large_number = 2147483647;
var_dump($large_number);
// на выходе: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// на выходе: float(2147483648)
// это подходит также для специфицированных 16-ричных чисел:
var_dump( 0x80000000 );
// на выходе: float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number);>
// на выходе: float(50000000000)
В PHP нет операции целочисленного деления. 1/2 даст float 0.5.
var_dump( 25/7 );
// на выходе: float(3.5714285714286)
Обсуждения Учебник PHP. Типы