2011-08-28 147 views
1

在Codeigniter中,我创建一个数组并将其返回给用户。我创建这样的阵列(结果是返回形成DB查询):PHP和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

我将你的旧问题的答案合并到这个问题中。将来,请编辑原始问题,而不是发布几乎完全相同的副本。 –

回答

3

只需使用:

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

参见CI documentation on queriesrow()

该函数返回单个结果行。如果你的查询有多行,它只返回第一行。结果作为对象返回。

+0

或只是'array(“email”=> $ result [0])'尽管这可能会在结果为空时提供undefinex索引通知。 – Gordon

1

第一个将email定义为对象

第二个将email定义为具有一个项目的普通数组,并且该项目本身是对象

例如,使用的email第一种形式访问id属性,你应该有:

var id = obj.email.id; 

在第二种形式:

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

编辑:回答你的新的问题:“如何能我得到第二个看起来像第一个“ - 你不能。第二种形式是定义完全不同的东西,你只需要改变你访问email的方式,如果总是有一个项目,则使用email[0],如上面的示例代码。

+2

建议使用“对象”(在JSON中使用的术语)或“地图”而不是“关联数组”来避免混淆。 –

+0

谢谢,更新。 –

+0

我在Codeigniter中创建了这样的数组:array(“email”=> $ result)。我怎样才能让它成为一个对象呢? –

1

第一个是有一个属性/构件email即,反过来,JSON对象包含属性iddesc

第二个,在另一方面,是一个JSON JSON对象具有属性email这是一个JSON Array包含元件具有属性iddesc

基本上,对象如果我要接入到value_1字段的值翻译:

1对象:

obj.email.value_1

2对象:

obj.email[0].value_1

相关问题