Как преобразовать строку в число в PHP: примеры и объяснения
Для преобразования строки в число в PHP существует несколько способов, в зависимости от типа числа.
1. Для целочисленных чисел (integer) можно использовать функции intval() или (int).
$string_number = "1234"; $integer_number = intval($string_number); echo $integer_number; // Output: 1234 // или $string_number = "1234"; $integer_number = (int)$string_number; echo $integer_number; // Output: 1234
2. Для чисел с плавающей точкой (float) можно использовать функции floatval() или (float).
$string_number = "12.34"; $float_number = floatval($string_number); echo $float_number; // Output: 12.34 // или $string_number = "12.34"; $float_number = (float)$string_number; echo $float_number; // Output: 12.34
3. Для чисел в шестнадцатеричной системе счисления можно использовать функцию hexdec().
$string_number = "1A"; $hex_number = hexdec($string_number); echo $hex_number; // Output: 26
4. Также можно использовать функцию settype() для преобразования типа переменной.
$string_number = "1234"; settype($string_number, "integer"); echo $string_number; // Output: 1234
Важно учитывать, что если строка не может быть преобразована в число, то вернется значение 0 или null. Также нужно учитывать форматирование числа, указание знака, разделитель тысячных и т.д. при обработке данных.
Перевести строку в число
согласитесь, что что-то тут не клеится: когда var_dump() выдает что строка имеет 22 знака, а мы видим 7, то ожидать что intval будет работать с этой строкой корректно — не стоит. Где еще 15 знаков? Что они из себя представляют? Имеет смысл распечатывать var_dump’ом все значения на всем протяжении их преобразования чтобы понять где проблема. Если есть debug — то еще лучше.
6 сен 2013 в 19:42
preg_match — если грамотно, str_replace — если тупо напролом, но очень просто.
Преобразовать строку в число
Как при помощи PHP превратить строку в число? При том строка хранится в отдельной переменной. Пробовал так:
$var1="1"; $var2=(int)$var1; echo $var1."
".$var2;
Но в итоге откладка через echo показала, что:
То есть $var2=0 , а почему — не понятно. Объясните и подскажите, пожалуйста!
Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
задан 18 авг 2013 в 14:42
platinumsemen platinumsemen
345 4 4 золотых знака 7 7 серебряных знаков 18 18 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Во всем виновата Ваша отладка через echo!
echo пытается преобразовать содержимое переменной в строку, что бы вывести на экран. Используйте для отладки var_dump. А еще лучше xdebug.
Что бы убедиться в этом попробуйте сделать так:
$a = new stdClass(); echo $a;
Получите Fatal error с текстом:
Object of class stdClass could not be converted to string
PHP. Строковое выражение в число
вычислит вам искомое выражение, однако следует понимать, что функция eval() выполнит вообще любой код, а не только математические формулы. Поэтому можно дополнительно валидировать строку на содержание цифр, точек и знаков математических операций, в т.ч. скобок.
Либо искать сторонние решения, которые будут заниматься парсингом выражения и вычислять его в соответствие с принятыми правилами приоритета операций.
Отслеживать
ответ дан 3 июл 2018 в 12:26
29.4k 1 1 золотой знак 21 21 серебряный знак 43 43 бронзовых знака
Добавьте пару строк о том, что произошло при приведении типа.
– user207618
3 июл 2018 в 12:28
@Other в комментариях уже скинули ссылку на порядок приведения строки к числу. имеет ли смысл добавлять это?
3 июл 2018 в 12:31
Скинули уже после моего коммента. Добавлять или нет — Ваше право. Комментарий — не ответ, де-юре.
– user207618
3 июл 2018 в 12:35
@Other я просто думаю, что автор и так понимает, что это строка и сама по себе она не вычислится. Так что почему там выводится 3 вряд ли является загадкой.