Цілі числа у PHP
integerце число з набору Z =
Цілі числа можуть специфікуватися в десятирічній (база 10), 16-річній (база 16) або 8-річній (база 8) нотації з необов'язковим знаком (- або +).
Якщо ви використовуєте 8-річну нотацію, першим символом числа має бути 0 (нуль), для 16-річної нотації першими символами числа будуть 0x.
Приклад 6-1. Цілочисленні літерали
Розмір integer залежить від платформи, хоча максимальне значення близько 2 мільйонів є звичайним (тобто 32-бітове знакове). PHP не підтримує беззнакові integers.
Переповнення
Якщо ви специфікуєте число за рамками діапазону типуinteger, воно буде інтерпретовано якfloat. Також, якщо ви виконуєте операцію, яка дає в результаті число за межами діапазону типуinteger, буде повернутоfloat.
Попередження!
На жаль, у РНР було помічено bug, тому не завжди була коректна робота з негативними числами. Наприклад: якщо виконати -50000 * $ million, результат буде -429496728. Однак, коли обидва операнди - позитивні, проблем не виникає.
Це усунуто в PHP 4.1.0.
У PHP немає операції цілісного поділу. 1/2 дастьfloat0.5.
Конвертація в integer
Для явної конвертації значення використовуйте приведення (int) або (integer). Однак у більшості випадків вам не потрібно використовувати приведення/cast, оскільки значення буде конвертовано автоматично, якщо операція, функція або структура керування вимагаєinteger-аргументу.
З boolean
З чисел із плаваючою точкою
При конвертації float в integer число округляєтьсяу бік нуля.
Якщо float виходить за діапазон integer(зазвичай це +/- 2.15e+9 = 2^31), результат буде невизначеним, оскільки float немає достатньої точності для видачі точного integer-результата. У цьому випадку не буде видано ні попередження, ні навіть будь-якого повідомлення!
Попередження!Ніколи не наводьте невідомий дріб доinteger, оскільки це може дати непередбачуваний результат.
З інших типів
Попередження!Поведінка при конвертації в integer для інших типів не визначена. В даний час поведінка така ж, якби значення спочатку було конвертовано в boolean. Однакнепокладайтеся на цю поведінку, оскільки вона може бути змінена без попередження.