2017-02-18 15 views
0

多次元配列を二次元配列に割り当てる方法は?ドロップダウンでカテゴリの階層を表示する 。($ form_multiselect())多次元配列を二次元配列に代入する方法は?

私は、この表に

| id | parent | name | 
|----|--------|---------| 
| 10 |  0 | 'menu1' | 
| 12 |  10 | 'menu2' | 
| 13 |  10 | 'menu3' | 
| 14 |  0 | 'menu4' | 

PHPのコードを持っています。

function prepare_items($data_from_table_of_database,$parent){ 
    $items = array();  
     foreach ($data_from_table_of_database as $item) { 
      if ($item ['parent'] == $parent) { 
       $items ['id'] = $item; 
       $items ['id'] ['children'] = 
        $this->prepare_items ($data_from_table_of_database, $item ['id']); 
      } 
     } 
    } 

私は配列コードは

Array (
    [107] => Array ([id] => 107 [menu_title] => تست1 [parent] => 0 [sort_order] => 1 [children] => Array ()) 
    [111] => Array ([id] => 111 [menu_title] => تست 4 [parent] => 0 [sort_order] => 1 [children] => Array ( 
      [109] => Array ([id] => 109 [menu_title] => تست 1 [parent] => 111 [sort_order] => 1 [children] => Array ()) 
      [115] => Array ([id] => 115 [menu_title] => تست7 [parent] => 111 [sort_order] => 1 [children] => Array ([110] => Array ([id] => 110 [menu_title] => تست 3 [parent] => 115 [sort_order] => 1 [children] => Array ()))))) 
    [112] => Array ([id] => 112 [menu_title] => تست 4 [parent] => 0 [sort_order] => 1 [children] => Array ()) 
    [113] => Array ([id] => 113 [menu_title] => تست 5 [parent] => 0 [sort_order] => 1 [children] => Array ()) 
    [114] => Array ([id] => 114 [menu_title] => تست شش6 [parent] => 0 [sort_order] => 3 [children] => Array ( 
      [108] => Array ([id] => 108 [menu_title] => تست 2 [parent] => 114 [sort_order] => 1 [children] => Array ()) 
    [118] => Array ([id] => 118 [menu_title] => yeeeeeee [parent] => 114 [sort_order] => 1 [children] => Array ()))) 
    [119] => Array ([id] => 119 [menu_title] => ff [parent] => 0 [sort_order] => 1 [children] => Array (
      [117] => Array ([id] => 117 [menu_title] => shar [parent] => 119 [sort_order] => 1 [children] => Array ()))) 
    ) 

の下で示したてきた私は、このSubjectを関連昨日別の質問を依頼

Array (
    [107] => Array ([id] => 107 [menu_title] => تست1 [sort_order] => 2) 
    [111] => Array ([id] => 111 [menu_title] => تست 4 [sort_order] => 3) 
    [109] => Array ([id] => 109 [menu_title] => تست 4 -- تست 1 [sort_order] => 1) 
    [115] => Array ([id] => 115 [menu_title] => تست 4 -- تست7 [sort_order] => 1) 
    [110] => Array ([id] => 110 [menu_title] => تست 4 -- تست7 -- تست 3 [sort_order] => 1) 
    . 
    . 
    . 

    ) 

怒鳴る別の配列と同じ構造に追加されます。

that's link.

私はます$ form-からマルチレベルのカテゴリを作成しようとしています>複数選択()。

答えて

0

私の答えが見つかりました。

private function build_item(&$list,$item,$level,$element_keys){ 
     $list[$item[$element_keys['menu_id']]]=str_repeat(" -> ", $level). $item[$element_keys['menu_title']]; 
    } 

private function build_item_list($items,$element_keys ,$element_keys,$level=0) { 

    foreach ($items as $item) {  
     $this->build_item($this->list,$item,$level,$element_keys); 

      if(count($item['children'])>0){ 
       $this->build_item_list($item['children'],$element_keys,$element_keys,++$level); 
      } 
    } 
    return ($this->list); 
    } 

それはそれは私の楽園だ

[1] => Array ([107] => تست1) 
[2] => Array ([111] => تست 4) 
[3] => Array ([109] => -> تست 1) 
[4] => Array ([115] => -> تست7) 
[5] => Array ([110] => -> -> تست 3) 
[6] => Array ([112] => -> تست 4) 
[7] => Array ([113] => -> تست 5) 
[8] => Array ([114] => -> تست شش6) 
[9] => Array ([108] => -> -> تست 2) 

以下の配列を生成します。

+0

コードシニターのマルチレベルカテゴリ/メニュー https://github.com/hamedhossani/Multi_level_category_multiselect_CodeIgniter –