В Codeigniter я создаю массив и возвращаю его пользователю. Я создаю массив, подобный этому (результат – это возврат формы запроса БД):
array("email" => $result)
Сейчас он выводит:
"email": [ { "id": "629", "desc": "0000", "value_1": "0000", "value_2": null, "value_3": null, "value_4": null, "privacy": "0" } ]
Таким образом, $result
– это массив, содержащий один объект. Как я могу заставить $result
содержать только объект? Как это:
"email": { "id": "628", "desc": "THIS IS IT", "value_1": "THIS IS IT2", "value_2": null, "value_3": null, "value_4": null, "privacy": "0" }
Благодарен за вход!
Просто используйте:
array("email" => $result->row());
См. Документацию CI по запросам и row()
:
Эта функция возвращает единственную строку результата. Если ваш запрос имеет более одной строки, он возвращает только первую строку. Результат возвращается как объект.
Первый – это объект JSON, у которого есть свойство / член email
который, в свою очередь, является объектом JSON, который содержит свойства id
, desc
и т. Д.
Второй, с другой стороны, является объектом JSON, который имеет свойство email
которое представляет собой массив JSON, который содержит 1 элемент, который имеет свойства id
, desc
и т. Д.
В принципе, если бы я должен был перевести доступ к значению поля value_1
:
1 объект:
obj.email.value_1
2 объекта:
obj.email[0].value_1
Первый определяет email
как объект .
Второй определяет email
как простой массив с одним элементом, и этот элемент является объектом сам по себе.
Например, чтобы получить доступ к свойству id
с использованием первой формы email
вы должны иметь:
var id = obj.email.id;
Во второй форме:
var id = obj.email[0].id;
Изменить: ответьте на новый вопрос «Как я могу получить второй, чтобы он выглядел как первый» – вы не можете. Вторая форма определяет совершенно другую вещь, вам просто нужно изменить способ доступа к этому email
и если у вас всегда есть один элемент, используйте email[0]
как в приведенном выше примере кода.