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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Первести text в integer
« : 03.02.2016, 10:43:50 »
Здравствуйте,

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

"55" -> 55 ?

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

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

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Первести text в integer
« Ответ #1 : 03.02.2016, 10:58:35 »
Код: php
$x = "55";
$x = (int) $x;

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

AlekVolsk

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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #3 : 03.02.2016, 11:08:19 »
Не сработало. Сделал скрин с пояснениями.
*

Wertos

  • Захожу иногда
  • 489
  • 22 / 0
Re: Первести text в integer
« Ответ #4 : 03.02.2016, 11:09:07 »
А на выходе точно строка ? var_dump может ?

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

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

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Re: Первести text в integer
« Ответ #5 : 03.02.2016, 11: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 | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Первести text в integer
« Ответ #6 : 03.02.2016, 11: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, 11:23:52 от AlekVolsk »
*

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #7 : 03.02.2016, 11:21:50 »
А на выходе точно строка ? var_dump может ?
Вот что вывел var_dump
int(0)
*

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #8 : 03.02.2016, 11: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

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #9 : 03.02.2016, 11: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

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #10 : 03.02.2016, 11:25:22 »
во всяком случае, не помешает проверить, что выдает запрос на выходе, перед преобразованием

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

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Первести text в integer
« Ответ #11 : 03.02.2016, 11:29:04 »
откуда кавычки?
вырежте регуляркой все нецифровые символы

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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #12 : 03.02.2016, 11:31:10 »
поле индекс плагина - профиль
*

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #13 : 03.02.2016, 11:32:19 »
таблица полей профиля
*

AlekVolsk

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

Mick_20

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

SmokerMan

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

AlekVolsk

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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #18 : 03.02.2016, 11:36:34 »
а вообще - весь этот код - г-код, ибо там имеется соответствующее апи для получения этих данных

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

Mick_20

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

AlekVolsk

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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #21 : 03.02.2016, 11:41:20 »
спасибо всем за помощь.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 0
  • Что тут писать?
Re: Первести text в integer
« Ответ #23 : 03.02.2016, 11:57:50 »
json_decode($var) сделайте - там текст хранится в JSON.
действительно. спасибо. так будет правильней наверняка
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться