Multidimensional associative array with id

2019-05-31 10:49发布

i would like to create a array of 3 dimensions from 3 mysql tables(sections(id,title) => rubriques(id,title) => category(id,title):

 [0]  section_title_1
      section id 1 
        [0] rubrique_title_1
            rubrique id 1
                [0] category_title_1
                    category id 1
                [1] category_title_2
                    category id 2 
                [2] ........................
        [1] rubrique_title_2
            rubrique id 2
            ...................

[1]  section_title_2
     ......... 

here is my code WITHOUT id:

$output = array();
$sections = $this->_model->get_table_sections();

  foreach($sections as $section){
  $output[$section->section_title] = array();

    $rubriques = $this->_model->get_rubriques_for_a_section($section->section_id);
       foreach($rubriques as $rubrique){
       $output[$section->section_title][$rubrique->rubrique_title] = array();

      $categories =$this->_model->                    get_categ_for_a_section_and_a_rubrique($section->section_id,$rubrique->rubrique_id);
    foreach($categories as $categorie){
         $output[$section->section_title][$rubrique->rubrique_title][] =    $categorie->categorie_title;
    }
  }
}

My question:

how to have the ID (section,rubrique,category in the array OUTPUT ??

i have tried :

$output[$section->section_title] = array("section id" => $section->section_id);

       $output[$section->section_title][$rubrique->rubrique_title] = array("rubrique id" => $rubrique->rubrique_id);

            $output[$section->section_title][$rubrique->rubrique_title][$categorie->categorie_title] = array("catid" => $categorie->categorie_id);

but for category , there is problem....

array (size=41)
  'Agriculture' => 
    array (size=4)
      'section id' => string '1' (length=1)
        'Agriculture' => 
           array (size=43)
            'rubrique id' => string '1' (length=1)
              'Andaineuse' => 
               array (size=1)
               ...
              'Arroseur' => 
               array (size=1)

Can anyone spot where I'm going wrong? Help is appreciated!
Many thanks............

1条回答
太酷不给撩
2楼-- · 2019-05-31 11:33

This might be the answer:

$output[$section->section_title][$rubrique->rubrique_title][$categorie->categorie_title] = array("catid" => $categorie->categorie_id);

But I would suggested you use IDs as keys in array instead of titles.

$output[$section->section_id][$rubrique->rubrique_id][$categorie->categorie_id][] = $categorie->categorie_title;

It's more clear, unique and it should work as you want. In foreach you can get keys (IDs) easily:

foreach($output as $key => $title) { ...
查看更多
登录 后发表回答