php - 从 Laravel 数据库查询结果中访问明显存在的整数类型数据时出现错误 "Cannot use object of type stdClass as array"

标签 php arrays database laravel hashmap

我从 Laravel 数据库查询命令获取了我的数据:

$group = DB::table('groups')->where("id", $group_id)->first();

当我 var dump 我的数据时,我得到:

object(stdClass)#200 (7) {
  ["id"]=>
  int(1)
  ["levels_id"]=>
  int(1)
  ["title"]=>
  string(8) "Novice 1"
  ["description"]=>
  string(11) "Lorem Ipsum"
  ["max_question_display"]=>
  int(5)
  ["created_at"]=>
  NULL
  ["updated_at"]=>
  NULL
}

我想访问 max_question_display。但是当我这样做时:

var_dump($group["max_question_display"]);

PHP 返回错误 Cannot use object of type stdClass as array

当我这样做时:

var_dump($group->max_question_display);

我得到:

int(5)

但我不想要 int。我只想要 5。整数形式。

如果我foreach 循环$group:

foreach ($group as $t) {
    echo "<pre>";
    var_dump($t);
    echo "</pre>";
}

我在每个循环中将每个数据作为单个数据获取。

int(1)
int(1)
string(8) "Novice 1"
string(11) "Lorem Ipsum"
int(5)
NULL
NULL

这显然也不是我正在寻找的结果访问方式。

我也尝试获取数组的第一个元素,认为这可能是一个只有 1 个元素的数组,但也引发了同样的错误。

我知道这个站点关于这个错误的一般答案是“stdClass 不是数组”。我浏览了几个与我的标题相似的问题,但没有解决来自 Laravel DB 的对象。当我阅读有关 Laravel DB 的手册时,我确信我可以像访问简单的字典/ HashMap 一样访问返回的数据。

编辑:抱歉,我理解我非常非常新手的错误。无需回答这个问题。谢谢。

最佳答案

注意第一个 var_dump 的第一行:

object(stdClass)#200

因为您正在处理一个对象,所以您可以使用 -> 访问它的属性。当你这样做时:

var_dump($group->max_question_display);

您在输出中看到 (int) 的原因是 var_dump 函数在值旁边显示了值类型。要访问该值,请执行

$group->max_question_display;

如果你想在没有类型的情况下在屏幕上看到它,请使用 echo

echo $group->max_question_display; // 5

关于php - 从 Laravel 数据库查询结果中访问明显存在的整数类型数据时出现错误 "Cannot use object of type stdClass as array",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38543175/

相关文章:

php - PHP 中的 Codeigniter 和 Mysql 程序

android - 如何解析四方类别json

c++ - 在 C++ 类中初始化二维数组

Java如何检查二维数组中的一行是否为空。

php - AJAX PHP 调用本地主机数据库返回错误

php - 使用 PHP 限制登录用户的内容访问

javascript - 胜利发生后SteamBot崩溃

php - 使用 mysqli 和 php 实例化构造函数类

sql - CHECK 限制出生日期?

php - 如何在不使用 php 中的函数的情况下将变量从一个类传递到另一个类?