Ответ
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). И тогда уже спать спокойно.