简体   繁体   中英

PHP and Codeigniter. How to return an array object and not plain array?

In Codeigniter I am creating an array and returning it to the user. I am creating the array like this (result is the return form a DB query):

array("email" => $result)

Right now it outputs:

"email": [
    {
        "id": "629",
        "desc": "0000",
        "value_1": "0000",
        "value_2": null,
        "value_3": null,
        "value_4": null,
        "privacy": "0"
    }
]

So $result is an array that contains a single object. How can I make $result contain just the object instead? Like this:

"email": {
    "id": "628",
    "desc": "THIS IS IT",
    "value_1": "THIS IS IT2",
    "value_2": null,
    "value_3": null,
    "value_4": null,
    "privacy": "0"
}

Thankful for all input!

Just use:

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

See the CI documentation on queries and row() :

This function returns a single result row. If your query has more than one row, it returns only the first row. The result is returned as an object.

The first defines email as an object .

The second defines email as plain array with one item, and that item is an object by itself.

For example, to access id property using the first form of email you should have:

var id = obj.email.id;

In the second form:

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

Edit: answer to your new question "How can I get the second one to look like the first one" - you can't. The second form is defining whole different thing, you just have to change the way you access that email and if always have one item, use email[0] like in the above sample code.

First one is a JSON Object that has a property/member email that is, in turn, a JSON Object that contains properties id , desc etc.

The second one, on the other hand, is a JSON Object that has a property email that is a JSON Array that contains 1 element that has properties id , desc etc.

Basically, if I were to translate the access to the value of value_1 field:

1 object:

obj.email.value_1

2 object:

obj.email[0].value_1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM