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

问题描述:

这是一个很长时间的头痛问题。我在codeigniter php活动记录中有以下代码。将对象的隐式数组转换为单个对象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.phpOrder #o_id;?>

$ order_details-> o_id; //为什么地球上这个表情告诉我错误

我想这个问题是

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

我如何能解决这个问题,因为我只取一个一次订购。谢谢

+1

我想我们需要更多的代码。我没有在任何地方看到对名为'$ order_details'的对象的引用,所以我们不知道它为什么不包含值。 –

+0

编辑请参阅 – danielad

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

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

...改为。


为了您的原代码,实际上没有办法来获取内容对象:是从数组转换不要用数字键发挥很好的结果PHP对象(你可以阅读更多关于这个here)。

+0

没有这是一个手动的方式做我想避免这样做,你认为? – danielad

+0

避免什么,总是得到第一个结果?你想显示那些在行吗? – raina77ow

+0

是的,但你在这里runx我的一些逻辑,forxple。你雾我的结果是视图是所有的对象,你分配给它的第一个元素是数组作为结果[0] – danielad

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

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

你以前的答案应该比这更适合 – danielad