Chopra
Chopra

Reputation: 571

Create multidimensional array from database query in Codeigniter

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

Upvotes: 1

Views: 5201

Answers (2)

bmorenate
bmorenate

Reputation: 963

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.

Upvotes: 1

Nouphal.M
Nouphal.M

Reputation: 6344

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

Upvotes: 2

Related Questions