Преобразовать строку в число
Как при помощи 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?
Очень часто нам приходится работать с числовой информацией, которая представлена в виде строк. В результате возникает необходимость в преобразования строки в число. Язык программирования PHP предлагает нам несколько возможностей для этого.
Речь идёт о специальных встроенных в PHP функциях, значительно облегчающих программисту задачу преобразования строки в число. Давайте их рассмотрим.
Преобразование строки в число функцией intval()
Представим, что у нас есть строка, включающая в себя один символ — «2». Вот, как будет выглядеть PHP-код преобразования этой строки в число с помощью встроенной функции intval() :
$stringNumberToParse = "2"; // var_dump($stringNumberToParse); // string '2' (length=1) // Convert the string to type int $parsedInt = intval($stringNumberToParse); // var_dump(is_int($parsedInt)); // boolean true // var_dump($parsedInt); // int 2 echo $parsedInt;На выходе получим 2, но уже в виде числа, а не строки.
Давайте пошагово разберём, что же произошло, и расшифруем каждую строчку кода: 1. Объявляется переменная, содержащая строку с символом «1». 2. У нас есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях). 3. Переменная $stringNumberToParse передаётся в функцию intval() в виде аргумента (если речь идёт не о целых числах, используют floatval() ). 4. Функция возвращает нам число, которое мы присваиваем с помощью переменной $parsedInt.
Остаётся добавить, что вышеописанная функция работает в PHP разных версий: 4, 5, 7+.
Преобразование строки в число путём приведения типов
Возможность приведения типов есть во многих языках программирования, и PHP исключением не является. В PHP мы тоже можем поменять тип переменной, применив для этого синтаксис приведения типов: (int)$variable, (float)$variable. Посмотрим, как это выглядит в коде:
$stringNumberToParse = "2"; //var_dump($stringNumberToParse); // string '2' (length=1) // Convert the string to type int $parsedInt = (int)$stringNumberToParse; //var_dump(is_int($parsedInt)); // boolean true //var_dump($parsedInt); // int 2 echo $parsedInt;Результатом будет следующий вывод:
Итак, что тут происходит: 1. Объявляется переменная, содержащая строку 1. 2. Есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях). 3. С помощью синтаксиса приведения типа для переменной устанавливается префикс (int). 4. Полученное числовое значение присваивается переменной $parsedInt.
Приведение типов можно успешно использовать и в PHP 5 и в PHP 7+.
Преобразование строки в число с помощью settype()
Также для выполнения преобразования можно использовать функцию settype() . Посмотрим, как преобразовать 3-символьную строку «555» в число:
Можно заметить, что параметр $str передается в функциею settype() по ссылке, следовательно, операцию присвоения делать не надо.
В принципе, вышеперечисленных способов вполне хватит для выполнения преобразования строки в число в PHP. Если же хотите знать больше, ждём вас на наших курсах!
PHP: Приведение типов
Приведение типа — это преобразование значения одного типа в значение другого типа.
Есть два вида приведения типов:
Неявное приведение типа выполняется интерпретатором автоматически, без непосредственного участия программиста. Например, значение будет автоматически преобразовано, если оператор ожидает, числовые операнды:
$sum = "3" + 4; // Строка "3" будет неявно преобразована в число 3Чтобы выполнить явное приведение, нужно указать в круглых скобках имя требуемого типа непосредственно перед приводимым значением или переменной:
Запись имени типа в круглых скобках называется оператором приведения типа. Допускаются следующие операторы приведения типов:
- (int), (integer) — приведение к integer .
- (bool), (boolean) — приведение к boolean .
- (float), (double), (real) — приведение к float .
- (string) — приведение к string .
- (array) — приведение к array .
- (object) — приведение к object .
- (unset) — приведение к NULL .
Приведение к целому числу
При приведении bool в integer , FALSE преобразуется в 0 (нуль), а TRUE — в 1 (единицу). При приведении float в integer , дробная часть будет округлена в сторону нуля. Значение NULL преобразуется в 0:
echo (int)FALSE, "
"; // 0 echo (int)TRUE, "
"; // 1 echo (int)12.3, "
"; // 12 echo (int)NULL; // 0
Строки преобразуются по следующим правилам:
- Если первый символ строки является цифрой, знаком + или - , то интерпретатор переходит к анализу второго символа, если второй символ строки является цифрой, то интерпретатор переходит к анализу третьего символа и так до тех пор, пока не будет обнаружен символ отличный от цифры, после этого интерпретатор возвращает полученное целое число.
- Если строка пустая или первый символ строки не является цифрой, знаком + или - , она преобразуется в 0.
echo (int)"12abc", "
"; // 12 echo (int)"a123bc", "
"; // 0 echo (int)"-12", "
"; // -12 echo (int)"12.3", "
"; // 12 echo (int)""; // 0
Для других типов поведение преобразования в integer не определено. Поэтому не нужно полагаться на любое наблюдаемое поведение, так как оно может измениться без предупреждения.
Приведение к числу с плавающей точкой
Строки преобразуются по следующим правилам:
- Если первый символ строки является цифрой, точкой, знаком + или - , то интерпретатор переходит к анализу второго символа, если второй символ строки является цифрой, точкой (если перед этим была цифра), буквой e или E (если перед этим была цифра или точка), то интерпретатор переходит к анализу третьего символа и так до тех пор, пока не будет обнаружен символ, который не может быть преобразован в числовое значение, после этого интерпретатор возвращает полученное число с плавающей точкой.
- Если строка пустая или первый символ строки не является цифрой, точкой, знаком + или - , она преобразуется в 0.
echo (float)"12abc", "
"; // 12 echo (float)"a123bc", "
"; // 0 echo (float)"-12", "
"; // -12 echo (float)"12.3", "
"; // 12.3 echo (float)".13", "
"; // 0.13 echo (float)"1.2e5", "
"; // 120000 echo (float)"1.e5"; // 100000
Значения других типов сначала преобразуются в integer , а затем уже из integer происходит преобразование в тип float .
Приведение к булеву типу
Следующие значения в результате преобразования дают значение FALSE :
- само значение FALSE
- 0 и 0.0 (нуль)
- пустая строка, и строка "0"
- массив без элементов
- NULL
- Объекты SimpleXML , созданные из пустых тегов
Все остальные значения при преобразовании дают в результате значение TRUE . Значение FALSE и шесть значений, которые при преобразовании приводятся к этому значению, обычно называют ложными значениями, а все остальные — истинными:
echo (bool)"", ": FALSE", "
"; // FALSE echo (bool)1, ": TRUE", "
"; // TRUE echo (boolean)[], ": FALSE"; // FALSE
В любом контексте, когда интерпретатор PHP ожидает получить булево значение, ложные значения интерпретируются как FALSE , а истинные значения — как TRUE .
Приведение к строке
Булево значение TRUE преобразуется в строку "1", а значение FALSE преобразуется в "" (пустую строку):
echo (string)TRUE; echo (string)FALSE, "
: пустая строка";
Целое число или число с плавающей точкой преобразуется в строку, состоящую из цифр числа:
echo (string)-123, "
"; echo (string)12.4, "
"; echo (string)1.4e6; // "1400000"
Массивы всегда преобразуются в строку "Array" :
$arr = []; echo (string)$arr;
NULL всегда преобразуется в пустую строку:
echo (string)NULL, "пустая строка";
Resource всегда преобразуется в строку вида "Resource id #1" .
Для преобразования объекта в строку, объект должен иметь метод __toString() :
class Obj < public function __toString() < return "Object"; >> $obj = new Obj; echo (string)$obj;
Если объект не имеет метод __toString() , то в результате преобразования будет вызвана фатальная ошибка:
class Obj <> $obj = new Obj; echo (string)$obj; // Будет вызвана ошибка
Приведение к NULL
Приведение к типу NULL не удаляет переменную и её значение, а лишь возвращает значение типа NULL :
$num = 10; echo gettype((unset)$num), "
"; echo $num;
С этой темой смотрят:
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru
Как преобразовать строку в число php?
Есть переменная
$a = '1333,37';
Пробовал (int)$a; и intval($a);
var_dump выдает int(1333)
Т.е цифры после запятой обрезаются. А как отсюда взять всё число?
- Вопрос задан более трёх лет назад
- 1716 просмотров
Комментировать
Решения вопроса 1
Битриксоид по принуждению
floatval(str_replace(',', '.', $a))
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- PHP
- +2 ещё
Laravel Horizon для нескольких проектов?
- 1 подписчик
- 3 часа назад
- 38 просмотров