Форум русской поддержки Joomla!® CMS
03.12.2016, 02:24:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Первести text в integer

 (Прочитано 272 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« : 03.02.2016, 11:43:50 »

Здравствуйте,

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

"55" -> 55 ?

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

Код
$aaa= (int)$aaa;
$aaa= intval($aaa, 'integer');
settype($aaa, "integer");
Записан
b2z
Support Team
*****

Репутация: +707/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #1 : 03.02.2016, 11:58:35 »

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

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #2 : 03.02.2016, 12:02:58 »

допускаю наличие лишних символов (неразрывный пробел) и некорректного десятичного разделителя разделителя, иначе должно работать
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #3 : 03.02.2016, 12:08:19 »

Не сработало. Сделал скрин с пояснениями.


* 123123123.jpg (92.23 Кб, 722x463 - просмотрено 66 раз.)
Записан
Wertos
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 543


« Ответ #4 : 03.02.2016, 12:09:07 »

А на выходе точно строка ? var_dump может ?

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

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

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2271



« Ответ #5 : 03.02.2016, 12:17:56 »

Не должно работать.

Попробуйте так:
Код
$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;

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #6 : 03.02.2016, 12:18:40 »

запрос интересный, но такая конструкция будет работать не везде, попробуйте более классический вариант:
Код
$query->where('`user_id` = '.(int)$u_id);
$query->where('`profile_key` = "profile.postal_code"');
...
$user_balance = (int)$db->loadResult();

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

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #7 : 03.02.2016, 12:21:50 »

А на выходе точно строка ? var_dump может ?
Вот что вывел var_dump
int(0)
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #8 : 03.02.2016, 12:23:35 »

запрос интересный, но такая конструкция будет работать не везде, попробуйте более классический вариант:
Код
$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
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #9 : 03.02.2016, 12:24:15 »

Не должно работать.

Попробуйте так:
Код
$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
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #10 : 03.02.2016, 12:25:22 »

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

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #11 : 03.02.2016, 12:29:04 »

откуда кавычки?
вырежте регуляркой все нецифровые символы

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

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #12 : 03.02.2016, 12:31:10 »

поле индекс плагина - профиль
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #13 : 03.02.2016, 12:32:19 »

таблица полей профиля


* 2123123.jpg (73.48 Кб, 657x439 - просмотрено 59 раз.)
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #14 : 03.02.2016, 12:33:41 »

Код
$user_balance = (int)preg_replace('/[^0-9]/', '', $db->loadResult());
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #15 : 03.02.2016, 12:35:07 »

Код
$user_balance = (int)preg_replace('/[^0-9]/', '', $db->loadResult());
работает)) эта регулярка вырезает все кроме цифр?
Записан
SmokerMan
Профи
********

Репутация: +692/-25
Offline Offline

Пол: Мужской
Сообщений: 5215



« Ответ #16 : 03.02.2016, 12:36:01 »

Код:
$var = preg_replace('/[^\d+]/s', '', $var);
но лучше выяснить откуда там кавычки взялись
опередили)
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #17 : 03.02.2016, 12:36:15 »

работает)) эта регулярка вырезает все кроме цифр?
да, если после 9 добавите точку - получите десятичные суммы, если таковые имеются
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #18 : 03.02.2016, 12:36:34 »

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

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

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #19 : 03.02.2016, 12:37:09 »

Код:
$var = preg_replace('/[^\d+]/s', '', $var);
но лучше выяснить откуда там кавычки взялись
опередили)
не ну если так плагин написан)
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #20 : 03.02.2016, 12:39:02 »

Код:
$var = preg_replace('/[^\d+]/s', '', $var);
\d+ также выдаст отрицательное число, т.е. будет знак минус, если он есть в строке, и не возьмет число полностью, если используется некорректный разделитель тысяч
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #21 : 03.02.2016, 12:41:20 »

спасибо всем за помощь.
Записан
b2z
Support Team
*****

Репутация: +707/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #22 : 03.02.2016, 12:44:36 »

json_decode($var) сделайте - там текст хранится в JSON.
Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 516


Как бы это заработать деньжат...


« Ответ #23 : 03.02.2016, 12:57:50 »

json_decode($var) сделайте - там текст хранится в JSON.
действительно. спасибо. так будет правильней наверняка
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet