1

I am new to PHP Codeigniter. I have a database inner join query in that I am fetching category id, category name, subcategory id and subcategory name as shown below.

e.g. enter image description here

I am figuring out the way to create multidimensional array with category id, name and subcategories details as an in it.

e.g.

Array[0]=>Array ( [category_id] => 1 [category_name] => Computer [sub] => 
          Array ([0]=> [subcategory_id] => 1 [subcategory_name] => C Programming ) 
                 [1]=> [subcategory_id] => 2 [subcategory_name] => Website Development) 
                 [2]=> [subcategory_id] => 4 [subcategory_name] => Java)) 

Array[1]=>Array ( [category_id] => 2 [category_name] => Robotics [sub] => 
          Array ( [subcategory_id] => 3 [subcategory_name] => Robo Wars))

Thanks

1
  • can you post the query? Commented Jan 20, 2014 at 15:03

2 Answers 2

2

Suppose the following is your result array from db

$queryResult = array(
  array('category_id'=>1,'category_name'=>'Computer','subcategory_id'=>1,'subcategory_name'=>'C Programming','category_id'=>'1'),
  array('category_id'=>1,'category_name'=>'Computer','subcategory_id'=>2,'subcategory_name'=>'Website Development','category_id'=>'1'),
  array('category_id'=>1,'category_name'=>'Computer','subcategory_id'=>4,'subcategory_name'=>'Java','category_id'=>'1'),
  array('category_id'=>2,'category_name'=>'Robotics','subcategory_id'=>3,'subcategory_name'=>'Robo Wars','category_id'=>'2'),
);

Then you could try

$result = array();
foreach($queryResult as $arr){
  $result[$arr['category_id']]['category_id']= $arr['category_id'];
  $result[$arr['category_id']]['category_name'] = $arr['category_name'];
  $result[$arr['category_id']]['sub'][]= array('subcategory_id'=>$arr['subcategory_id'],'subcategory_name'=>$arr['subcategory_name']);
}

Hope this is helpful

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks a lot. I was trying to solve this from last two days. You saved me.
1

You didn't post your query, but I'll assume it looks something like this;

$sql = 'SELECT whatever FROM my_table WHERE category = ?';

$data = array(
    $category
);

$query = $this->db
    ->query( $sql, $data )
    ->result_array();

Adding the ->result_array() function to your query will return an associative array instead of an object.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.