【问题标题】:how could I pass my stdClass into an array?我怎样才能将我的 stdClass 传递到一个数组中?
【发布时间】:2012-08-03 01:29:39
【问题描述】:

我的数据库中有一个 stdClass :

$query = $this->db->get('news');

if(isset($options['id']) || $options['limit'] == 1)
    return $query->row(0);

我想将它传递给我的变量:

$data['news'] = $this->front_model->getNews($spec);

这样我就可以通过 $data['news']->id 访问任何房产

但我收到此消息错误:

消息:stdClass 类的对象无法转换为字符串

为什么?

【问题讨论】:

  • 什么是$this->db?你在使用像 CodeIgniter 这样的框架吗?
  • 您的getNews 返回什么? var_dump($data['news']) 看看你有什么。
  • 如果您使用的是 CodeIgniter,那么您可以使用 return $query->row_array(0),但我真的不认为这是导致错误消息的原因。
  • 是的,我正在使用代码 Igniter,我知道我可以使用 $query->row_array(0) 但我想将其保留为 stdclass,并将其放入我的 $data 变量中传递给视图。
  • @ghbarratt 我的 var_dump 告诉我我正在寻找什么,事实上,它正在工作,但我仍然在页面顶部出现该错误。当我的意思是它有效时,我的意思是我可以访问 $data['news']->id 反正

标签: php arrays codeigniter stdclass


【解决方案1】:

代替

return $query->row(0);

使用这个

return $query->row_array(0);

它已经以数组形式获取结果

http://codeigniter.com/user_guide/database/results.html

首先从 $query->row() 中删除 0,因为它只获取单个记录。然后 print_r($data) 看看会发生什么

也这样做

$news = $this->front_model->getNews($spec);

而不是

$data['news'] = $this->front_model->getNews($spec);

现在你可以这样称呼它

echo $news->id;

【讨论】:

  • 是的,但问题是我希望将它用作 stdClass 以便我可以通过这种方式访问​​我的变量:$news->id 而不是 $news['id']
  • 好的,但是我如何将它传递到视图中呢?因为我正在传递一个数组: $data ,仅此而已。 “首先从 $query->row() 中删除 0,因为它只获取单个记录”=> 这是故意的 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2017-06-05
  • 1970-01-01
  • 2011-04-11
  • 2020-06-30
  • 2011-09-10
相关资源
最近更新 更多