【问题标题】:Get value from STDClass从 STDClass 中获取价值
【发布时间】:2018-09-14 00:00:53
【问题描述】:

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

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

print_r 的结果是:

数组 ( [0] => 标准类对象 ( [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 功能: 需要一次

我做错了什么?

TIA

【问题讨论】:

  • 您的变量名为$row,您正在尝试访问$query。对我来说似乎是一个错字。 $row 也似乎是一个数组,而不仅仅是一个对象。
  • 真的吗?你试过自己调试吗?
  • 抱歉,我发布了一个错误的变量,因为我正在调试它,但使用 $row 返回相同的错误

标签: php arrays codeigniter stdclass


【解决方案1】:

您不能直接从 $query 中获取值,因为此时您只是在生成查询,并且只有在执行 $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;
    }

【讨论】:

    【解决方案2】:

    由于您的结果在数组中并且数组包含对象,因此您必须先访问该数组然后再访问对象

    echo $row[0]->login_id;
    

    或者使用foeach获取所有值

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2020-11-07
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多