Первести text в integer

  • 23 Ответов
  • 424 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Первести text в integer
« : 03.02.2016, 12:43:50 »
Здравствуйте,

Забрал значение из поля в профиле. Оно типа "text".
Получил, например, "55". Так и идет с ковычками.
Как мне перевести в integer, чтобы не было ковычек?

"55" -> 55 ?

Вот так не сработало. Приводит либо к нулю либо к вообще ничему)

Код: php
$aaa= (int)$aaa;
$aaa= intval($aaa, 'integer');
settype($aaa, "integer");

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Re: Первести text в integer
« Ответ #1 : 03.02.2016, 12:58:35 »
Код: php
$x = "55";
$x = (int) $x;

Должно сработать и выдать 55. Очень странно, что у Вас не работает.

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #2 : 03.02.2016, 13:02:58 »
допускаю наличие лишних символов (неразрывный пробел) и некорректного десятичного разделителя разделителя, иначе должно работать

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #3 : 03.02.2016, 13:08:19 »
Не сработало. Сделал скрин с пояснениями.

*

Wertos

  • *****
  • 505
  • + 21 -
Re: Первести text в integer
« Ответ #4 : 03.02.2016, 13:09:07 »
А на выходе точно строка ? var_dump может ?

Код: php
$x = "55";
$x = (int) $x;

Должно сработать и выдать 55. Очень странно, что у Вас не работает.
Подтверждаю, работает, сам делаю так же !

*

SeBun

  • *******
  • 3047
  • + 184 -
  • @SeBun48
Re: Первести text в integer
« Ответ #5 : 03.02.2016, 13:17:56 »
Не должно работать.

Попробуйте так:
Код: php
$user_balance=$db->loadResult();
$user_balance=substr($user_balance, 1);
$user_balance=mb_substr($user_balance, 0, -1);
$user_balance = (int) $user_balance;
echo $user_balance;

Использовал разные функции и писал по памяти, так что открывайте справочник и попытайтесь понять, что я сделал. Вы писали, что у вас число получается из базы вместе с кавычками. Их нужно сначала удалить, а потом переводить текст в числовой тип.
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Администрирование
Ник занят | По личным вопросам не консультирую

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #6 : 03.02.2016, 13:18:40 »
запрос интересный, но такая конструкция будет работать не везде, попробуйте более классический вариант:
Код: php
$query->where('`user_id` = '.(int)$u_id);
$query->where('`profile_key` = "profile.postal_code"');
...
$user_balance = (int)$db->loadResult();

во всяком случае, не помешает проверить, что выдает запрос на выходе, перед преобразованием
« Последнее редактирование: 03.02.2016, 13:23:52 от AlekVolsk »

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #7 : 03.02.2016, 13:21:50 »
А на выходе точно строка ? var_dump может ?
Вот что вывел var_dump
int(0)

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #8 : 03.02.2016, 13:23:35 »
запрос интересный, но такая конструкция будет работать не везде, попробуйте более классический вариант:
Код: php
$query->where('`user_id` = '.(int)$u_id);
$query->where('`profile_key` = "profile.postal_code"');
$user_balance = (int)$db->loadResult();

сделал. var_dump попрежнему int(0)

во всяком случае, не помешает проверить, что выдает запрос на выходе, перед преобразованием

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #9 : 03.02.2016, 13:24:15 »
Не должно работать.

Попробуйте так:
Код: php
$user_balance=$db->loadResult();
$user_balance=substr($user_balance, 1);
$user_balance=mb_substr($user_balance, 0, -1);
$user_balance = (int) $user_balance;
echo $user_balance;

Использовал разные функции и писал по памяти, так что открывайте справочник и попытайтесь понять, что я сделал. Вы писали, что у вас число получается из базы вместе с кавычками. Их нужно сначала удалить, а потом переводить текст в числовой тип.

ну это уже костыль какой-то)) я так тоже думал на крайний случай

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #10 : 03.02.2016, 13:25:22 »
во всяком случае, не помешает проверить, что выдает запрос на выходе, перед преобразованием

сразу после запроса без преобразований
string(4) ""55""

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #11 : 03.02.2016, 13:29:04 »
откуда кавычки?
вырежте регуляркой все нецифровые символы

а вообще - весь этот код - г-код, ибо там имеется соответствующее апи для получения этих данных

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #12 : 03.02.2016, 13:31:10 »
поле индекс плагина - профиль

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #13 : 03.02.2016, 13:32:19 »
таблица полей профиля

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #14 : 03.02.2016, 13:33:41 »
Код: php
$user_balance = (int)preg_replace('/[^0-9]/', '', $db->loadResult());

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #15 : 03.02.2016, 13:35:07 »
Код: php
$user_balance = (int)preg_replace('/[^0-9]/', '', $db->loadResult());
работает)) эта регулярка вырезает все кроме цифр?

*

SmokerMan

  • ********
  • 5329
  • + 689 -
Re: Первести text в integer
« Ответ #16 : 03.02.2016, 13:36:01 »
Код
$var = preg_replace('/[^\d+]/s', '', $var);
но лучше выяснить откуда там кавычки взялись
опередили)

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #17 : 03.02.2016, 13:36:15 »
работает)) эта регулярка вырезает все кроме цифр?
да, если после 9 добавите точку - получите десятичные суммы, если таковые имеются

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #18 : 03.02.2016, 13:36:34 »
а вообще - весь этот код - г-код, ибо там имеется соответствующее апи для получения этих данных

да я не разбираюсь что откуда. "модель вид представление" для меня сложновато

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #19 : 03.02.2016, 13:37:09 »
Код
$var = preg_replace('/[^\d+]/s', '', $var);
но лучше выяснить откуда там кавычки взялись
опередили)
не ну если так плагин написан)

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Re: Первести text в integer
« Ответ #20 : 03.02.2016, 13:39:02 »
Код
$var = preg_replace('/[^\d+]/s', '', $var);
\d+ также выдаст отрицательное число, т.е. будет знак минус, если он есть в строке, и не возьмет число полностью, если используется некорректный разделитель тысяч

*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #21 : 03.02.2016, 13:41:20 »
спасибо всем за помощь.


*

Mick_20

  • *****
  • 657
  • + 3 -
  • Кручу мучу... заработать хочу.
Re: Первести text в integer
« Ответ #23 : 03.02.2016, 13:57:50 »
json_decode($var) сделайте - там текст хранится в JSON.
действительно. спасибо. так будет правильней наверняка