Intval: примеры (PHP)

Преобразование данных в целые числа с помощью intval()
Раздел: Преобразование типов/форматов
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
Альтернативные функции в PHP
  • (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'))  # ValueError

Intval в Javascript

parseInt() похожа на intval(), но имеет особенности:

console.log(parseInt('42px'));  // 42
console.log(parseInt('0xFF', 16));  // 255

Intval в 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
  • PHP 8.1 - при передаче массива в intval() теперь генерируется предупреждение типа E_WARNING. Ранее возвращалось значение 1 без предупреждений.
  • PHP 8.0 - улучшена обработка числовых строк, содержащих экспоненциальную запись или ведущие нули.
  • PHP 7.0+ - улучшена обработка очень больших чисел и чисел с плавающей точкой.

Рекомендуется проверять типы передаваемых значений перед использованием intval() в современном PHP.

Расширенные примеры
Работа с граничными значениями
Пример php
echo intval(PHP_INT_MAX + 1); // Превышение максимального int
-9223372036854775808
Обработка научной нотации
Пример php
echo intval('1.2e3');
1
Системы счисления с разными алфавитами
Пример php
echo intval('z', 36); // Максимальная система
35
Особенности с восьмеричными числами
Пример php
echo intval('08'); // Не восьмеричное число
8
Пример php
echo intval('08', 0); // Автоопределение
0
Преобразование объектов
Пример php
class Test { public $x = 5; }
echo intval(new Test());
1
Обработка строк с разными разделителями
Пример php
echo intval('1,234.56'); // Запятая останавливает разбор
1

PHP intval function comments

En
Intval Get the integer value of a variable