Что такое целочисленный тип (integer) в PHP?

Ответ

int (или integer) — это скалярный тип данных в PHP для представления целых чисел. Он может быть положительным, отрицательным или нулём.

Особенности и ограничения:

  • Размер: Зависит от платформы. На 64-битных системах диапазон составляет от PHP_INT_MIN (-9,223,372,036,854,775,808) до PHP_INT_MAX (9,223,372,036,854,775,807). Значения можно получить через константы PHP_INT_SIZE, PHP_INT_MAX, PHP_INT_MIN.
  • Переполнение: Если целочисленная операция выходит за пределы int, результат автоматически преобразуется в float.
  • Системы счисления: Поддерживается определение чисел в двоичной, восьмеричной, десятичной и шестнадцатеричной системах.

Примеры объявления:

// Десятичные числа
$a = 42;
$b = -273;
$c = 0; // Ноль

// Другие системы счисления
$bin = 0b11111111; // Двоичное: 255
$oct = 0123;       // Восьмеричное: 83 (префикс 0)
$hex = 0x1A;       // Шестнадцатеричное: 26

var_dump($a, $bin, $oct, $hex);
// Вывод: int(42) int(255) int(83) int(26)

Приведение к типу int:

// Явное приведение
$str = "123.9abc";
$intVal = (int) $str; // 123 (дробная часть и нечисловые символы отбрасываются)

$boolVal = (int) true;  // 1
$nullVal = (int) null;  // 0

// Функции для проверки
$value = 100;
var_dump(is_int($value));     // true
var_dump(is_integer($value)); // true (псевдоним is_int)
var_dump(ctype_digit($value)); // false (работает только со строками)

Практическое замечание: При работе с внешними данными (например, из $_GET или $_POST) числа приходят в виде строк. Для арифметических операций лучше явно приводить их к int с помощью (int), intval() или фильтра filter_var($value, FILTER_VALIDATE_INT).

Ответ 18+ 🔞

А, слушай, вот про int в PHP — это же просто целые числа, типа 1, 2, -5, ноль. Всё, казалось бы, элементарно. Но тут, как всегда, есть свои подводные камни, на которые можно наступить, если не знать.

Что это вообще такое и где собака зарыта:

  • Размер, ёпта: Зависит от того, на чём ты крутишься. На нормальной, современной 64-битной системе это от PHP_INT_MIN (это типа -9 квинтиллиона какого-то, овердохуища) до PHP_INT_MAX (столько же, но в плюс). Конкретные цифры можно вытащить через PHP_INT_SIZE, PHP_INT_MAX, PHP_INT_MIN.
  • Переполнение: Если ты такой умный и пытаешься посчитать что-то за пределами этих гигантских чисел — PHP просто плюнет и скажет «да похуй», превратив твой int в float. И всё, приехали.
  • Системы счисления: Можно писать числа не только как все нормальные люди (десятичные), но и в двоичном, восьмеричном и шестнадцатеричном виде. Для особо хитрожопых.

Вот смотри, как это объявляется, чтоб ты понимал:

// Обычные, человеческие числа
$a = 42;
$b = -273;
$c = 0; // Просто ноль, хуй с горы

// А это для тех, кто хочет покрасоваться
$bin = 0b11111111; // Двоичное: 255
$oct = 0123;       // Восьмеричное: 83 (обрати внимание, префикс 0)
$hex = 0x1A;       // Шестнадцатеричное: 26

var_dump($a, $bin, $oct, $hex);
// Вывод: int(42) int(255) int(83) int(26)

А теперь самое важное — приведение типов. Вот где начинается пиздец и волнение ебать:

// Явно говорим: стань целым числом, сука!
$str = "123.9abc";
$intVal = (int) $str; // Будет 123. Дробную часть и буквы просто отрежет, как нехрен делать.

$boolVal = (int) true;  // 1
$nullVal = (int) null;  // 0

// Функции для проверки, что у тебя в руках именно целое число
$value = 100;
var_dump(is_int($value));     // true
var_dump(is_integer($value)); // true (это одно и то же, просто псевдоним)
var_dump(ctype_digit($value)); // false (эта штука только со строками работает, чувак)

Практический совет, чтоб не обосраться: Когда данные приходят извне — из форм ($_GET, $_POST), из файлов — они почти всегда в виде строк. И если ты начнёшь их складывать как числа, PHP сначала попытается быть умным и сам всё преобразовать. Но доверия к этому процессу — ноль ебать. Лучше явно привести к int через (int), intval() или, для полного параноидального контроля, через filter_var($value, FILTER_VALIDATE_INT). И тогда уже спать спокойно.