Доп. поле со значением array

  • 12 Ответов
  • 449 Просмотров

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

*

Duff89

  • **
  • 21
  • 0
Доп. поле со значением array
« : 29.12.2015, 01:12:09 »
Задача узнать значение доп. поля в к2. Делаю так:
Код
$extra_fields = json_decode($row->extra_fields );
$phones = $extra_fields[2]->value;//значение доп поля с id2
Все выводиться как нужно, но одно доп. поле почему-то всегда возвращает значение array.Тип поля - текстовое поле, ничем не отличается от других.В чем может быть причина?
Joomla! 3.4.5 K2 v2.6.9

*

robert

  • ********
  • 4002
  • 371
Re: Доп. поле со значением array
« Ответ #1 : 29.12.2015, 01:26:06 »
Причина в том, что json_decode декодирует json-строку и возвращает (в вашем случае) объект, который может содержать массив (array). Странно, что вы задали такой вопрос, сумея при этом написать код преобразования json в PHP-переменную.
P.S. если я правильно понял, то значение данного поля представляет собой массив, и если вы делаете echo, то вы увидите на выходе array().
« Последнее редактирование: 29.12.2015, 01:37:21 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Duff89

  • **
  • 21
  • 0
Re: Доп. поле со значением array
« Ответ #2 : 29.12.2015, 01:32:01 »
Приведу кусок кода чуть больше
Код
$extra_fields = json_decode($row->extra_fields );
$phones = $extra_fields[2]->value;//возвращает номер телефона.все ок
$phones2 = $extra_fields[11]->value;// работает тоже
$phones3 = $extra_fields[12]->value;// работает тоже
$email = $extra_fields[3]->value;//работает тоже
$msgs = $extra_fields[4]->value;//нихрена не работает.возвращает array
Во всех полях ввожу только числа

*

robert

  • ********
  • 4002
  • 371
Re: Доп. поле со значением array
« Ответ #3 : 29.12.2015, 01:38:37 »
Смотрите P.S. предыдущего поста и попробуйте делать
Код: php-brief
print_r($msgs);
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

passer

  • ******
  • 874
  • 70
Re: Доп. поле со значением array
« Ответ #4 : 29.12.2015, 01:42:09 »
var_dump($extra_fields[4]->value);
А лучше перебрать в цикле. У вас завтра поля добавятся/убавятся, ключи массива сменятся и это работать перестанет.

*

Duff89

  • **
  • 21
  • 0
Re: Доп. поле со значением array
« Ответ #5 : 29.12.2015, 02:05:40 »
Заранее извиняюсь, я не так силен в php как хотелось бы.
Правильно ли я делаю
Код
$debt = var_dump($extra_fields[4]->value);
Данный код ничего не выводит..
P.S. echo со старым кодом выводит array

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


*

robert

  • ********
  • 4002
  • 371
Re: Доп. поле со значением array
« Ответ #7 : 29.12.2015, 02:18:33 »
Код
$debt = var_dump($extra_fields[4]->value);
Данный код ничего не выводит..
Он и не должен ничего выводить.
Просто var_dump или print_r, и это только с целью дебажить код.
P.S. echo со старым кодом выводит array
Просто никак не могу понять почему значение одних полей выводятся без проблем, а другие никак
Еще раз
значение данного поля представляет собой массив, и если вы делаете echo, то вы увидите на выходе array().
Если после этого все равно не понимаете, то идите изучать PHP.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Duff89

  • **
  • 21
  • 0
Re: Доп. поле со значением array
« Ответ #8 : 29.12.2015, 04:49:39 »
Ситуация прояснилась в довольно интересную сторону.
Код
$extra_fields = json_decode($row->extra_fields );
$phones = $extra_fields[2]->value;//код работает.Возвращает реальное значение
$debt = $extra_fields[1]->value;//код работает.Возвращает реальное значение
$fio = $extra_fields[4]->value;//код не работает. Возвращает значение array
$email = $extra_fields[3]->value;//код работает.Возвращает реальное значение
Перепробовал кучу самых разных вариантов и пришел к выводу, что данный код нормально работает только для доп. полей с id: 1,2 или 3. доп.поле с id 4 и выше всегда возвращает значение array. Может кто подскажет из-за чего такое может быть?

*

robert

  • ********
  • 4002
  • 371
Re: Доп. поле со значением array
« Ответ #9 : 29.12.2015, 10:55:03 »
ТС, вы вообще читаете, что вам писали?
Последний раз: потому что значения этих полей являются массивами.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Duff89

  • **
  • 21
  • 0
Re: Доп. поле со значением array
« Ответ #10 : 29.12.2015, 12:06:32 »
Конечно читаю, то что мне пишут, спасибо большое за ответы. Но объясните как доп.поле(текстовое поле) с id3 возвращает реальное значения, а уже доп.поле(текстовое поле) с id4 и введеными в него теми же цифрами уже идет как массив.Просто хочется докопаться до причины.

*

robert

  • ********
  • 4002
  • 371
Re: Доп. поле со значением array
« Ответ #11 : 29.12.2015, 12:21:13 »
Но объясните как доп.поле(текстовое поле) с id3 возвращает реальное значения, а уже доп.поле(текстовое поле) с id4 и введеными в него теми же цифрами уже идет как массив.
Потому что одни данные записываются в БД как текст, другие - как массив. Еще почему? Потому что разработчик так хотел.
Ваше дело - обрабатывать данные в зависимости от их типов или переписать форму, чтобы эти данные имели нужный тип, а не задавать глуппые вопросы. Столько ответов, а вы все стоите на одном месте.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Duff89

  • **
  • 21
  • 0
Re: Доп. поле со значением array
« Ответ #12 : 29.12.2015, 12:32:46 »
Странно конечно все это, но в принципе вопрос решен.Буду использовать только поля с id1,2,3.Всем спасибо