当我尝试返回对象时,我在Codeignter中遇到了一个问题,其中一些控制器代码是
$sql = $this->user_model->userdetail($data);
if ($sql) {
echo json_encode(array(
"status" => "0",
"message" => "",
"data" => $sql
));
exit();
}
型号代码是
function userdetail($data) {
$id = $data["id"];
$sql = "select email, name from user where id='".$id."'";
$query = $this->db->query($sql);
if ($query->num_rows() > 0) {
return $query->result_array();
}
return $query->num_rows();
}
我可以得到结果
{
"status": "0",
"message": "",
"data": [
{
"email": "lily@email.com",
"name": "lily"
}
]
}
这里data
是一个数组,但是它应该是一个对象,上面的结果应该是这样
{
"status": "0",
"message": "",
"data": {
"email": "lily@email.com",
"name": "lily"
}
}
然后我在模型代码中将return $query->result_array();
更改为return $query->result_object();
,但是没有用,我该怎么办?非常感谢。
答案 0 :(得分:0)
我认为我在模型中找到了原因
return $query->result_array(); // also can be changed to return $query->result_object(); or return $query->result();
它们可以返回数组或对象,并且可以在控制器文件中
$sql = $this->user_model->userdetail($data);
$sql
应该是数组或对象,但实际上它会返回这样的多维数组
返回result()或result_object()
Array
(
[0] => stdClass Object
(
[email] => lily@email.com
[name] => lily
)
)
返回result_array()
Array
(
[0] => Array
(
[email] => lily@email.com
[name] => lily
)
)
很奇怪。
答案 1 :(得分:0)
在代码点火器$query->result_array();
中,它以数组格式返回结果。
要获得对象格式的结果,请像
一样使用$query->result();
if ($query->num_rows() > 0) {
return $query->result();
}
对于单行,请使用$query->result_array()
答案 2 :(得分:0)
也许您需要在json_encode中使用JSON_FORCE_OBJECT。
echo json_encode(array(
"status" => "0",
"message" => "",
"data" => $sql), JSON_FORCE_OBJECT);