Php 在CodeIgniter中将阵列转换为stdClass
我使用下面的函数从CodeIgniter中的两个表返回数据Php 在CodeIgniter中将阵列转换为stdClass,php,codeigniter,Php,Codeigniter,我使用下面的函数从CodeIgniter中的两个表返回数据 public function test() { $this->db->select('*'); $this->db->from('WHOUSE1.DLY_BWR_DLY_PERFORMANCE'); $this->db->join('WHOUSE1.DATE_DIM', 'WHOUSE1.DATE_DIM.DATE_KEY = WHOUSE1.DLY_BWR_DLY_PERF
public function test()
{
$this->db->select('*');
$this->db->from('WHOUSE1.DLY_BWR_DLY_PERFORMANCE');
$this->db->join('WHOUSE1.DATE_DIM', 'WHOUSE1.DATE_DIM.DATE_KEY = WHOUSE1.DLY_BWR_DLY_PERFORMANCE.BDP_DATE');
$query = $this->db->get();
return $query->result_array();
}
使用var\u dump,我得到以下结果
array (size=3226)
0 =>
array (size=121)
'BDP_ID' => string '945149' (length=6)
'BDP_COST_CENTRE_NUMBER' => string '1376' (length=4)
'BDP_DATE' => string '20040807' (length=8)
'BDP_DAY_CODE' => string '6' (length=1)
'BDP_TAKE' => string '4923.78' (length=7)
'BDP_PAYOUT' => string '3779.22' (length=7)
'BDP_ACTUAL_SLIPPAGE' => string '636' (length=3)
1 =>
array (size=121)
'BDP_ID' => string '945150' (length=6)
'BDP_COST_CENTRE_NUMBER' => string '1376' (length=4)
'BDP_DATE' => string '20040809' (length=8)
'BDP_DAY_CODE' => string '1' (length=1)
'BDP_TAKE' => string '2848.3' (length=6)
'BDP_PAYOUT' => string '4190.34' (length=7)
'BDP_ACTUAL_SLIPPAGE' => string '280' (length=3)
但我想得到的是这个
array (size=3226)
0 =>
object(stdClass)[27]
'BDP_ID' => string '945149' (length=6)
'BDP_COST_CENTRE_NUMBER' => string '1376' (length=4)
'BDP_DATE' => string '20040807' (length=8)
'BDP_DAY_CODE' => string '6' (length=1)
'BDP_TAKE' => string '4923.78' (length=7)
'BDP_PAYOUT' => string '3779.22' (length=7)
'BDP_ACTUAL_SLIPPAGE' => string '636' (length=3)
1 =>
object(stdClass)[29]
'BDP_ID' => string '945150' (length=6)
'BDP_COST_CENTRE_NUMBER' => string '1376' (length=4)
'BDP_DATE' => string '20040809' (length=8)
'BDP_DAY_CODE' => string '1' (length=1)
'BDP_TAKE' => string '2848.3' (length=6)
'BDP_PAYOUT' => string '4190.34' (length=7)
'BDP_ACTUAL_SLIPPAGE' => string '280' (length=3)
我似乎找不到将数组转换为对象(stdClass)的方法。如果我是CodeIgniter的新手,将非常感谢您的帮助。使用
return $query->result();
此函数将查询结果作为对象数组返回,或在失败时作为空数组返回。通常,您将在foreach循环中使用此选项,如下所示:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
编辑:
如果您只想打印,可以使用var\u dump()
或print\u r()
如果需要所有属性及其值的数组,请使用get\u object\u vars()
根据与Codeigniter I相同的文件,详情如下:
result_array()
This function returns the query result as a pure array, or an empty array when no
result `is produced. Typically you'll use this in a foreach loop, like this:`
和
result()
This function returns the query result as an array of objects, or an empty array
on failure.
您应该以这种方式返回数据
return $query->result();
数组到stdClass可以通过这种方式在php中完成
stdClass:: __set_state(array());
或者一种更好的方式
$a = (object) array();
在模型中使用此代码(更改表名并选择不同的文件)
当我使用$query->result()时,函数失败;还有什么我能做的吗?谢谢。我得到一个空白屏幕,即使我的Apache环境设置为显示所有错误,也不会显示任何错误。嗨,John,我的函数使用$query->result()失败;是否有办法重新编写函数test(),以免失败。我只使用result_array();为了提取数据以便解释我想看什么,公共函数test(){$this->db->join('WHOUSE1.DATE\u DIM','WHOUSE1.DATE\u DIM.DATE\u KEY=WHOUSE1.DLY\u BWR\u DLY\u PERFORMANCE.BDP\u DATE');返回$this->db->get('WHOUSE1.DLY\u BWR\u DLY\u PERFORMANCE')->result()}好吧,还是一样的。但我不明白你为什么在帮不上忙的时候投票否决了我。无意冒犯。因为答案在codeigniter手册中,尽管我没有对你的问题投反对票:(这回答了你的问题吗?
stdClass:: __set_state(array());
$a = (object) array();
$this->db->select('DISTINCT(subcategory)');
$this->db->from('tbl_property');
$this->db->where('status','1');
$data = $this->db->get()->result();
$sub_id = array();
foreach ($data as $row)
{
array_push($sub_id,$row->subcategory);
}
$this->db->from('tbl_subcategory');
$this->db->where_in('id',$sub_id);
$data1 = $this->db->get()->result();
return $data1;