Как строку превратить в число в PHP

Раздел: PHP программирование -> Числа в PHP

Преобразование строки в число в PHP

В PHP часто возникает необходимость преобразовать строковый литерал в числовое значение для математических операций или сравнений. Рассмотрим различные методы, их особенности и типичные ошибки.

Какое самое простое и быстрое преобразование строки в число?

Оптимальным по скорости и лаконичности является явное приведение типа с помощью (int) или (float). Эти конструкции работают на уровне интерпретатора и не требуют вызова функций.

$intNum = (int) "42";
echo $intNum; // 42

$floatNum = (float) "3.1415";
echo $floatNum; // 3.1415

Php случайное число (генерация случайного числа в php)

42
3.1415

количество чисел php (количество чисел в php)

При приведении PHP игнорирует начальные пробелы. Если строка начинается с цифр, за которыми следуют нечисловые символы, остаток отбрасывается. Строка без цифр даёт 0.

Типичные проблемы:

  • Строка "123abc" преобразуется в 123, а "abc123" - в 0.
  • Пустая строка "" даёт 0.
  • Экспоненциальная запись (например, "1e5") обрабатывается корректно для float.
  • Приведение к int отсекает дробную часть: (int) "3.99" даёт 3.

Как использовать функции intval() и floatval() для преобразования?

Функции intval() и floatval() - это именованные обёртки над приведением, позволяющие задать основание системы счисления (только для intval).

$hex = intval("FF", 16); // 255
$oct = intval("77", 8);  // 63
$bin = intval("1010", 2); // 10

$strFloat = floatval("12.34"); // 12.34

массив чисел php (массив чисел в php)

255
63
10
12.34

Php получить число (получение числа в php)

Цель: когда нужно обработать строки с числами в нестандартных системах (шестнадцатеричной, восьмеричной, двоичной). Случай использования: разбор цветовых кодов (#FF0000) или битовых масок.

Если строка содержит недопустимые символы для заданного основания, возвращается 0. Для floatval основание не применяется.

Как изменить тип переменной на числовой с помощью settype()?

Функция settype() изменяет тип существующей переменной по ссылке. Возвращает true при успехе.

$str = "123.45";
settype($str, "float");
echo $str; // 123.45

Php строку в число (преобразование строки в число в php)

123.45

Php преобразовать число (преобразование числа в php)

Цель: когда требуется изменить тип переменной на месте, не создавая новую. Используется редко, но может быть удобно в некоторых сценариях.

Если строка не может быть преобразована (например, "abc" в integer), переменная становится 0. Тип задаётся строкой: "integer" или "float".

Как безопасно преобразовать строку в число с проверкой через filter_var()?

Функция filter_var() с фильтрами FILTER_VALIDATE_INT или FILTER_VALIDATE_FLOAT возвращает число, если строка валидна, и false в противном случае. Это позволяет избежать неожиданных нулей.

$int = filter_var("123", FILTER_VALIDATE_INT); // 123
$bad = filter_var("abc", FILTER_VALIDATE_INT); // false
$float = filter_var("3.14", FILTER_VALIDATE_FLOAT); // 3.14

// Дополнительные опции (диапазон для целых)
$range = filter_var("150", FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 100]]);
var_dump($range); // bool(false)

Php целое число (проверка целого числа в php)

int(123)
bool(false)
float(3.14)
bool(false)

Php большие числа (работа с большими числами в php)

Цель: когда требуется строгая валидация, например, при обработке пользовательского ввода. Случай использования: проверка возраста, количества товаров.

Фильтр не поддерживает научную (экспоненциальную) запись для float (например, "1e5" вернёт false). Для целых чисел допустимы только десятичные цифры и необязательный знак.

Как извлечь число из строки с помощью sscanf()?

Функция sscanf() разбирает строку по шаблону, аналогично printf, и помещает извлечённые значения в переменные. Возвращает количество успешно сопоставленных элементов.

$str = "Товар стоит 250.5 рублей";
$count = sscanf($str, "Товар стоит %f рублей", $price);
echo $price; // 250.5
echo $count; // 1

Php сумма чисел (сумма чисел в php)

250.5
1

Php число с точкой (число с плавающей точкой в php)

Цель: извлечение чисел из сложных строк с известным форматом. Случай использования: парсинг логов, файлов конфигурации.

Если шаблон не совпадает, возвращается 0, и переменные не изменяются. Тип извлекаемого значения определяется спецификатором (%d - целое, %f - float).

Как преобразовать строку в число с помощью математических операций?

Применение арифметических операций (+0, *1, -0) вынуждает PHP привести строку к числу. Это краткая запись, равносильная (int) или (float), но с возвратом того же типа, что и операнды.

$num1 = "123" + 0;   // 123 (integer)
$num2 = "3.14" * 1;   // 3.14 (float)
$num3 = "42" - 0;     // 42 (integer)
123
3.14
42

Цель: быстрое преобразование в выражении без явного приведения. Случай использования: подсчёт суммы значений в массиве строк, где все элементы гарантированно числовые.

Результат может быть неожиданным при смешивании типов: "123" + true даёт 124. Для чистого преобразования рекомендуется использовать +0 или (int).

Расширенные примеры преобразования строк в числа

Дополнительные сценарии и комбинации методов.

Пример 1. Преобразование строк с ведущими знаками и пробелами

Пример
$negative = (float) "  -45.67abc";
echo $negative; // -45.67

$positive = (int) "   +128";
echo $positive; // 128
-45.67
128

PHP корректно обрабатывает знак и игнорирует начальные пробелы, но останавливается на первом нечисловом символе.

Пример 2. Использование intval с разными основаниями для преобразования hex, oct, bin

Пример
$hex = intval("1A", 16);      // 26
$oct = intval("33", 8);       // 27
$bin = intval("1101", 2);     // 13
$customBase = intval("123", 5); // 38 (1*25 + 2*5 + 3 = 38)
echo "Hex: $hex, Oct: $oct, Bin: $bin, Base5: $customBase";
Hex: 26, Oct: 27, Bin: 13, Base5: 38

Пример 3. Проверка возраста с помощью filter_var и диапазона

Пример
$ageInput = "25";
$age = filter_var($ageInput, FILTER_VALIDATE_INT, [
    "options" => ["min_range" => 1, "max_range" => 150]
]);
if ($age === false) {
    echo "Некорректный возраст";
} else {
    echo "Возраст: $age";
}
Возраст: 25

Пример 4. Извлечение нескольких чисел из строки с помощью sscanf

Пример
$data = "Позиция X: 123, Y: 456";
$count = sscanf($data, "Позиция X: %d, Y: %d", $x, $y);
echo "X = $x, Y = $y, найдено элементов: $count";
X = 123, Y = 456, найдено элементов: 2

Пример 5. Применение арифметических операций к элементам массива

Пример
$strings = ["10", "20", "30"];
$sum = array_sum($strings); // array_sum автоматически приводит строки
echo "Сумма: $sum"; // 60

// Вручную с помощью array_map и +0
$numbers = array_map(function($s) { return $s + 0; }, $strings);
print_r($numbers);
Сумма: 60
Array
(
    [0] => 10
    [1] => 20
    [2] => 30
)

Пример 6. Обработка строк с десятичным разделителем-запятой (локаль)

Пример
$str = "3,14";
// Замена запятой на точку перед преобразованием
$normalized = str_replace(",", ".", $str);
$num = (float) $normalized;
echo $num; // 3.14

// Либо использование number_format в обратную сторону (не рекомендуется)
3.14

Если в системе установлена локаль, где запятая является десятичным разделителем, прямое приведение может дать неверный результат. Поэтому требуется предварительная нормализация.

Преобразование строки в число в PHP - comments

En
Php строку в число (php)