Codeigniter 转换从数据库返回的多维数组数据
我在处理多维数组数据时遇到问题。 我加入了两个表(maincategories和categories) 表2主要类别: id,主类别Codeigniter 转换从数据库返回的多维数组数据,codeigniter,multidimensional-array,Codeigniter,Multidimensional Array,我在处理多维数组数据时遇到问题。 我加入了两个表(maincategories和categories) 表2主要类别: id,主类别 $this->db->select('m.id, m.name_en AS maincategory') ->select('c.name_en AS category') ->from('categories AS c') ->join('maincat
$this->db->select('m.id, m.name_en AS maincategory')
->select('c.name_en AS category')
->from('categories AS c')
->join('maincategories AS m', 'c.maincategory_id=m.id', 'left');
$query = $this->db->get();
表格类别:
id,主类别\u id,类别
$this->db->select('m.id, m.name_en AS maincategory')
->select('c.name_en AS category')
->from('categories AS c')
->join('maincategories AS m', 'c.maincategory_id=m.id', 'left');
$query = $this->db->get();
这导致下面列出了所有4个类别
[3] => stdClass Object
(
[id] => 7
[maincategory] => Career
[category] => Business Sales
)
[4] => stdClass Object
(
[id] => 1
[maincategory] => Accommodation
[category] => Camping
)
[5] => stdClass Object
(
[id] => 6
[maincategory] => Accommodation
[category] => Hostels
)
[6] => stdClass Object
(
[id] => 7
[maincategory] => Career
[category] => Career Events
)
列表中有4个独特的类别,2个属于main类别:住宿,其他2个类别属于main类别:职业。我想实现的是每个主要类别只列出一次,并且这些类别应属于该主要类别。大概是这样的:
[6] => stdClass Object
(
[id] => 7
[maincategory] => Career
[category] => array(Career Events, Business Sales, .....)
)
[7] => stdClass Object
(
[id] => 7
[maincategory] => Accommodation
[category] => array(Hostels, Camping, .....)
)
function fetch_all(){
$data = array();
$first = $this->db->select('id, maincategory')->get('maincategory')->result_array();
if( is_array( $first ) && count( $first ) > 0 ){
foreach( $first as $key => $each ){
$data[$key]['category_id'] = $each['id']; #main category id
$data[$key]['maincategory'] = $each['id']; #main category name
$second = $this->db->select('category')->where_in('maincategory_id', $each['id'])->get('categories')->result_array();
$data[$key]['category'] = $second; #all sub-category(s) array
}
}
}
阵列转储的最终结果可能会有所不同,但我希望您理解我试图实现的目标。我读了很多关于转换多维数组的书。我只是还没想好。非常感谢您的指导 试着这样做:
[6] => stdClass Object
(
[id] => 7
[maincategory] => Career
[category] => array(Career Events, Business Sales, .....)
)
[7] => stdClass Object
(
[id] => 7
[maincategory] => Accommodation
[category] => array(Hostels, Camping, .....)
)
function fetch_all(){
$data = array();
$first = $this->db->select('id, maincategory')->get('maincategory')->result_array();
if( is_array( $first ) && count( $first ) > 0 ){
foreach( $first as $key => $each ){
$data[$key]['category_id'] = $each['id']; #main category id
$data[$key]['maincategory'] = $each['id']; #main category name
$second = $this->db->select('category')->where_in('maincategory_id', $each['id'])->get('categories')->result_array();
$data[$key]['category'] = $second; #all sub-category(s) array
}
}
}
不要使用太多的db调用,请尝试使用下划线.php库 我在这里概述了一些如何在本案例中使用它的示例: 编辑