从STDClass获取价值

时间:2018-04-04 12:14:03

标签: php arrays codeigniter stdclass

我正在使用PHP和CodeIgniter。 我使用以下脚本运行查询:

$query = $this->db->query('select login_id, date_created from prjsite_login');
$row = $query->result();
print_r($row);

print_r的结果是:

  

数组([0] => stdClass对象([login_id] => admin [date_created] =>   2018-04-04 13:18:42))

哪个是对的。当我尝试使用以下脚本从stdClass获取1个对象或值时:

echo $query->login_id;

我收到以下错误:

  

遇到PHP错误

     

严重性:注意

     

消息:尝试获取非对象的属性

     

文件名:pages / home.php

     

行号:21

     

回溯:

     

文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ application \ views \ pages \ home.php   行:21功能:_error_handler

     

文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ application \ controllers \ Pages.php   行:11功能:视图

     

文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ index.php行:315功能:   require_once

我做错了什么?

TIA

2 个答案:

答案 0 :(得分:1)

由于您的结果是在数组和数组包含对象,您必须首先访问该数组然后对象

echo $row[0]->login_id;

或使用foeach获取所有值

foreach($row as $value)
{
    echo $value->login_id;
}

答案 1 :(得分:1)

您无法直接从$ query获取值,因为此时您只是生成一个查询,并且只有在执行了您正在执行的查询后才能从$ query获得结果

$row=$query->result();

查看结果,您将获得一个stdClass对象数组的结果,因此需要对对象进行json编码,然后将其解码回数组

$array = json_decode(json_encode($row), True);

如果您确定只会获得一行,则不需要循环,您只需按

进行操作即可
echo $array[0]->login_id;

否则,你必须进行循环

 foreach ($array as  $value) {
        echo $value->login_id;
    }