Ціле число (integer)
Цілим (integer) називають число, що належить множині
ℤ = {..., -2, -1, 0, 1, 2, ...}.
&reftitle.seealso;
Десяткові дробиЧисла довільної точності / BCMathЦілі довільної довжини / GMPСинтаксис
Цілі числа (int) можна вказувати в десятковій (основа 10),
шістнадцятковій (основа 16), вісімковій (основа 8) або двійковій (основа 2)
формах запису.
Мінус-оператором можна
позначити від'ємне ціле число (int).
Для вісімкової форми запису перед числом ставиться 0 (нуль).
Починаючи з PHP 8.1.0, вісімковій формі запису може передувати
0o або 0O.
Для шістнадцяткової форми запису перед числом ставиться 0x (нуль та латинська x).
Для двійкової форми запису перед числом ставиться 0b (нуль та b).
Починаючи з PHP 7.4.0, для кращої розбірливості цілі числа можуть містити
знаки підкреслення (_) між цифрами. Потім парсер PHP
вилучає ці підкреслення.
Запис цілого числа
]]>
Формально, починаючи з PHP 8.1.0, структура цілого числа (int) є
такою (раніше вісімкові префікси 0o та
0O не були дозволені, а до PHP 7.4.0 не були дозволені
символи підкреслення):
Розмір цілого числа (int) залежить від платформи, хоча, зазвичай,
максимальне значення близьке до двох мільярдів (це 32-бітне знакове).
64-бітні платформи зазвичай мають максимальне значення близьке до 9E18.
PHP не підтримує беззнакові цілі числа. Розмір цілого числа містить константа
PHP_INT_SIZE, максимальне значення — константа
PHP_INT_MAX та мінімальне значення — константа
PHP_INT_MIN.
Переповнення цілого числа
Якщо PHP стикається з числом, що виходить за межі типу int, то
інтерпретує його як десятковий дріб (float). Відповідно, в
операціях з результатом за межами типу int буде повертатись
десятковий дріб (float).
Переповнення цілого числа
]]>
Ділення цілого числа
В PHP не існує оператора для ділення цілих чисел (int). Для
цього застосовується функція intdiv.
Дія 1/2 в результаті поверне десятковий дріб
(float) 0.5. Таке значення можна привести до
цілочисельного (int) типу з округленням в бік нуля. Натомість
регулювати округлення можна функцією round.
]]>
Перетворення в ціле число
Щоб явно перетворити значення на ціле число (int),
застосовується приведення за допомогою запису (int) або
(integer). Здебільшого приведення не потрібне, оскільки
значення буде автоматично перетворено, якщо оператор, функція чи структура
контролю очікують значення типу int. Також тип значення можна
перетворити на int функцією intval.
Результатом перетворення типу resource на int є
унікальне число, яке призначається для ресурсу (resource) під
час виконання програми.
&Seealso;: Перетворення типів.
З логічного (bool)
&false; буде перетворено на 0 (нуль), а &true; —
на 1 (одиницю).
З десяткового дробу (float)
Під час перетворення float на int відбувається
округлення в бік нуля. Починаючи з PHP 8.1.0, у
відповідь на перетворення &float; з ненульовою дробовою частиною на
&integer;, що призводить до втрати точності, виводиться повідомлення про
застарілий функціонал.
]]>
Якщо десятковий дріб вийде за межі типу int (зазвичай це
+/- 2.15e+9 = 2^31 на 32-бітних платформах та
+/- 9.22e+18 = 2^63 на 64-бітних платформах), результат
буде невизначеним, оскільки тип float не має достатньої
точності, щоб дати саме цілочисельний результат. Інтерпретатор про це не
повідомляє!
Результатом приведення спеціальних чисел NaN,
Inf та -Inf до типу
int є число нуль (0).
Не можна перетворювати невідомий дріб на ціле число, оскільки це може
призвести до непередбачуваного результату.
]]>
Варто переглянути застереження про
точність десяткового дробу.
З рядкового (string)
Якщо рядок є
числовим або
починається з числа, то його можна перетворити на відповідне цілочисельне
значення, а інакше — на нуль (0).
З NULL
&null; завжди перетворюється на нуль (0).
З інших типів
Результат перетворення інших типів на int є невизначеним.
НЕ можна покладатись на такі перетворення, оскільки
їхній алгоритм може змінюватись без попереджень.