【问题标题】:Accessing data from DB从数据库访问数据
【发布时间】:2018-05-31 15:12:58
【问题描述】:

我正在从数据库中获取数据并将其放入变量$data。如果我print_r($data),我会得到类似的东西:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => Bob
        )
    [1] => stdClass Object
        (
            [id] => 2
            [name] => Mike
        )
)

每个都有更多的[key] => value,显然它不会以[1]结尾。

我像这样使用foreach()

foreach ($data as $item) {
   foreach ($item as $key => $value) {
       //code
   }
}

关于以上所有问题,我有两个问题:

1) 获取$key$value 是否有不太复杂的技术?

2) 例如,如果我只想输出[name],我将如何访问它? $key[placeholder]while 占位符是一个数字输出$key 的字母数字值。

【问题讨论】:

  • $item 是一个对象。在您的情况下,您 不能 迭代对象。阅读 php 手册中有关对象的更多信息。
  • 谢谢你 u_mulder,但你能告诉我如何获得 [name] 吗?例如?
  • Masivuye,它不是重复的,您可以自己查看我使用的是相同的$key => $value。它根本没有回答我的问题
  • 当您从数据库中检索数据时,您可能能够将其作为数组而不是对象取回,这将使生活变得更加轻松。在此处添加检索代码,这可能有助于解决您的问题

标签: php arrays


【解决方案1】:

你有一个包含对象的数组,所以如果你只想要名称:

$name_list = array();

foreach ($data as $obj) {
    $name_list[] = $obj->name;
}

这样您将拥有一个仅包含每个对象名称的数组。

总结一下:

你遍历一个 obj 数组,所以要访问每个对象的属性,只需这样做:

$obj->/* the properties */;

【讨论】:

  • 谢谢你,但当我和你一模一样时,我得到:ArrayArrayArrayArray...
  • 你在foreach ($data as $obj) { ... }$data 你在帖子中显示的数组?
  • 看,当我使用:$name_list[] = $obj->name; 然后echo $name_list; 我得到ArrayArrayArrayArray。但是,如果我使用:echo $obj->name; 我会得到结果......为什么会这样?
  • 这是因为 $name_list 是一个数组(所以你不能“回显”它,试试 var_dump($name_list)$obj->name 循环中当前 obj 的属性名称
  • 哦...所以,我需要在循环外设置$name_list,然后用json_encode 输出?有没有更好的方法(输出、访问等)?
猜你喜欢
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2016-12-10
  • 2018-08-24
相关资源
最近更新 更多