Как преобразовать строку в число php
Перейти к содержимому

Как преобразовать строку в число php

  • автор:

Преобразовать строку в число

Как при помощи 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

  • PHP
  • +2 ещё

Laravel Horizon для нескольких проектов?

  • 1 подписчик
  • 3 часа назад
  • 38 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *