Intval: примеры (PHP)
intval(mixed $value, int $base = 10): intФункция intval() в PHP возвращает целочисленное значение переменной. Она используется для явного преобразования значений к целому типу, часто при работе с пользовательским вводом, данными из форм или приведения типов для математических операций.
Функция имеет следующий синтаксис:
intval(mixed $value, int $base = 10): int
- $value - значение для преобразования в целое число. Может быть строкой, числом с плавающей точкой, логическим значением или даже массивом.
- $base - необязательный параметр, определяющий систему счисления для преобразования строк. По умолчанию равен 10. Допустимый диапазон: от 2 до 36 (для систем счисления) или 0 (для автоматического определения по префиксу строки).
Функция пытается извлечь целое число из начала строки. Если преобразование невозможно, возвращается 0. Для логических значений true преобразуется в 1, а false в 0.
Преобразование различных типов данных:
echo intval(42.7);42
echo intval('42 test');42
echo intval(true);1
echo intval('1a', 16); // Шестнадцатеричная система26
echo intval('101', 2); // Двоичная система5
echo intval('077', 0); // Автоопределение (восьмеричная)63
- (int) или (integer) - приведение типа. Быстрее чем intval(), но не поддерживает параметр системы счисления.
$num = (int)'42.5'; // Результат: 42 - filter_var() - более мощная функция фильтрации с различными флагами.
echo filter_var('42.7', FILTER_SANITIZE_NUMBER_INT); - settype() - изменяет тип переменной на месте.
$var = '123'; settype($var, 'int'); - floor(), ceil(), round() - математические функции для работы с дробными числами, возвращают float.
intval() предпочтительнее когда нужна поддержка разных систем счисления или требуется получить целое число из начала строки с нечисловыми символами.
Intval в Python
Функция int() более строгая и вызывает исключение при ошибке:
print(int('42')) # 42
print(int('42.7')) # ValueErrorIntval в Javascript
parseInt() похожа на intval(), но имеет особенности:
console.log(parseInt('42px')); // 42
console.log(parseInt('0xFF', 16)); // 255Intval в MySQL
Функции CAST() и CONVERT():
SELECT CAST('123' AS UNSIGNED); -- 123
SELECT CONVERT('123.45', SIGNED); -- 123Главное отличие PHP intval() - возврат 0 при невозможности преобразования, тогда как другие языки часто генерируют ошибки.
echo intval([1, 2, 3]);1
Начиная с PHP 8.1 это вызовет предупреждение.
echo intval(999999999999999999);1000000000000000000
echo intval(false) . ' ' . intval(true);0 1
echo intval('-10', 2);0
- PHP 8.1 - при передаче массива в intval() теперь генерируется предупреждение типа E_WARNING. Ранее возвращалось значение 1 без предупреждений.
- PHP 8.0 - улучшена обработка числовых строк, содержащих экспоненциальную запись или ведущие нули.
- PHP 7.0+ - улучшена обработка очень больших чисел и чисел с плавающей точкой.
Рекомендуется проверять типы передаваемых значений перед использованием intval() в современном PHP.
echo intval(PHP_INT_MAX + 1); // Превышение максимального int-9223372036854775808
echo intval('1.2e3');1
echo intval('z', 36); // Максимальная система35
echo intval('08'); // Не восьмеричное число8
echo intval('08', 0); // Автоопределение0
class Test { public $x = 5; }
echo intval(new Test());1
echo intval('1,234.56'); // Запятая останавливает разбор1