将对象隐藏数组转换为单个对象php

时间:2015-09-25 12:24:21

标签: php codeigniter

这是一个令人头疼的问题。我在codeigniter php活动记录中有以下代码。

  $this->db->select('*');
  $this->db->from('orders');
  $this->db->join('order_detail', 'order_detail.order_id = orders.o_id');
  $this->db->join('profiles','profiles.id = orders.buyer_id','left');
  $this->db->where('orders.o_id', $order_id);
  $this->db->group_by('orders.o_id');
  $query = $this->db->get();
  $order_details_by_order_id_result = (object)$query->result();

结果

var_dump($ order_details_by_order_id_result);退出; //见下文

object(stdClass)[34]
  public 0 => 
    object(stdClass)[37]
      public 'xx_id' => string '13' (length=2)
      public 'yy_iud' => string '22' (length=10)
      public 'order_total' => string '25.00' (length=5)
      public 'shipto_fname' => string 'dan' (length=3)
      public 'shipto_lname' => string 'theman' (length=6

在我的控制器上我调用了上面的函数如下:

  $order_details = $this->orderdetails->get_orderdetail_of_buyer($oid);
  $data['order_details'] = $order_details; //pass this to the view
  $this->load->view('dashboard/order_detail_view',$data);

我希望将结果发送到视图(/ order_detail_view.php )       订购#o_id;?>

$ order_details-> o_id ; //为什么这个表达式显示错误

我猜问题是

对象(stdClass的)[34]       public 0 =>

我怎么能解决这个问题,因为我一次只能获取一个订单。感谢

2 个答案:

答案 0 :(得分:1)

在CodeIgniter中,$query->result()返回一个对象数组,每个元素代表结果集中的行。无需将其转换为对象;使用...

$result = $query->result();
if ($result) {
  $order_details_by_order_id_result = $result[0];
}

......相反。

对于原始代码,实际上无法获取内容对象:从数组转换结果的PHP对象与数字键不能很好地匹配(您可以阅读有关此here的更多信息)。

答案 1 :(得分:1)

row()方法将为您查询返回单行。

$query = $this->db->get();
if ($query->num_rows() > 0)
{
   $row = $query->row(); 
   echo $row->xx_id;
}