В 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"
}

Благодарен за все отзывы!

1
Jonathan Clark 28 Авг 2011 в 15:28

3 ответа

Лучший ответ

Просто используйте:

array("email" => $result->row());

См. документацию по запросам и row() в CI:

Эта функция возвращает одну строку результата. Если в вашем запросе более одной строки, он возвращает только первую строку. Результат возвращается как объект.

3
Sam Starling 28 Авг 2011 в 12:21

Первый - это объект JSON, у которого есть свойство / член email, то есть, в свою очередь, объект JSON, содержащий свойства id, desc и т. Д.

Второй, с другой стороны, представляет собой объект JSON, у которого есть свойство email, которое представляет собой массив JSON, содержащий 1 элемент со свойствами id, desc так далее.

В принципе, если бы я переводил доступ к значению поля value_1:

1 объект:

obj.email.value_1

2 объект:

obj.email[0].value_1

1
ZenMaster 28 Авг 2011 в 10:50

Первый определяет email как объект .

Второй определяет email как простой массив с одним элементом, и этот элемент сам по себе является объектом .

Например, для доступа к свойству id с использованием первой формы email у вас должно быть:

var id = obj.email.id;

Во втором классе:

var id = obj.email[0].id;

Изменить: ответьте на ваш новый вопрос «Как я могу сделать так, чтобы второй выглядел как первый» - вы не можете. Вторая форма определяет совсем другое, вам просто нужно изменить способ доступа к этому email, и, если всегда есть один элемент, используйте email[0], как в приведенном выше примере кода.

1
Shadow Wizard Wearing Mask V2 28 Авг 2011 в 10:54