2013-03-25 149 views
0

創建JSON我有一個問題,
我創建了多個JSON從陣列中的數據, 但我有問題輸出, JSON子或子菜單始終打印每一個元素, 是JSON孩子應該在打印在外地關係media_menu_parent_id不是成功在PHP

可以幫助我呢?

我可以張貼我的圖像表,怎麼把我reputaion < 10 :(

這是我的代碼控制器

header("Content-type: application/json; charset=utf-8"); 
    $main_arr = array(); 

    if (!$mediaId) { 
     $main_arr['status'] = "nok"; 
     $main_arr['message'] = "Media id is null"; 
     $json = json_encode($main_arr); 
     echo $json; 
     exit(); 
    } 

    $where = array('media_menu.status'=>1 , 
        'media_menu.media_menu_parent_id'=>0, 
        'media_menu.media_id'=>$mediaId 
       ); 

    $count = $this->mediamenumodel->getCountMediaMenu($where); 
    $result = $this->mediamenumodel->getMediaMenu($where,$offest,$page); 

    if (!$result) { 
     $main_arr['status'] = "nok"; 
     $main_arr['message'] = "Data not Found"; 
     $json = json_encode($main_arr); 
     echo $json; 
     exit(); 
    } 

    $main_arr['rowCount'] = $count; 
    $main_arr['media_id'] = $result[0]['media_id']; 
    $main_arr['media_name'] = $result[0]['media_name']; 

    $h=0; 
    foreach($result as $key => $value) 
    {  
     $where1 = array('media_menu_parent_id' => $value['media_menu_id']); 
     $count1 = $this->mediamenumodel->getCountMediaMenu($where1); 
     $getMediaMenu1 = $this->mediamenumodel->getMediaMenu($where1, $count1); 

     $arr['media_menu_id'] = $value['media_menu_id']; 
     $arr['media_menu_name'] = $value['media_menu_name']; 
     $arr['media_menu_url'] = $value['media_menu_url']; 
     $arr['thumbnail']  = !empty($value['thumbnail']) ? URL_CONTENT_MENU_THUMB.$value['thumbnail'] : ""; 

     if ($count1>0) { 
      $i=0; 
      $arr['lewat'] = "ok"; 
      foreach ($getMediaMenu1 as $key1 => $value1){ 
       $arr['submenu'][$i]['media_menu_id'] = $value1['media_menu_id']; 
       $arr['submenu'][$i]['media_menu_name'] = $value1['media_menu_name']; 
       $arr['submenu'][$i]['media_menu_url'] = $value1['media_menu_url']; 
       $arr['submenu'][$i]['thumbnail']  = !empty($value1['thumbnail']) ? URL_CONTENT_MENU_THUMB.$value['thumbnail'] : ""; 


       $i++; 

      } 

     } 

     $main_arrx[] = $arr; 
     $h++; 
    } 

    $main_arr['data'] = $main_arrx; 

    $json = json_encode($main_arr); 
    echo $json; 

可以確信我的模型運行良好, 我試圖修改陣列格式,但沒有成功

,這是JSON輸出:

{ 

"rowCount": 5, 
"media_id": "1", 
"media_name": "sites", 
"data": [ 
    { 
     "media_menu_id": "5", 
     "media_menu_name": "Games", 
     "media_menu_url": "", 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "7", 
       "media_menu_name": "Games 2", 
       "media_menu_url": "", 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    }, 
    { 
     "media_menu_id": "4", 
     "media_menu_name": "Application", 
     "media_menu_url": null, 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "7", 
       "media_menu_name": "Games 2", 
       "media_menu_url": "", 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    }, 
    { 
     "media_menu_id": "3", 
     "media_menu_name": "Rich Content", 
     "media_menu_url": null, 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "7", 
       "media_menu_name": "Games 2", 
       "media_menu_url": "", 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    }, 
    { 
     "media_menu_id": "2", 
     "media_menu_name": "Top Download", 
     "media_menu_url": null, 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "7", 
       "media_menu_name": "Games 2", 
       "media_menu_url": "", 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    }, 
    { 
     "media_menu_id": "1", 
     "media_menu_name": "Hot Promo", 
     "media_menu_url": "", 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "10", 
       "media_menu_name": "Hot Promo 1", 
       "media_menu_url": null, 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    } 
] 

} 

,我想我的輸出是這樣的:

{ 

"rowCount": 5, 
"media_id": "1", 
"media_name": "sites", 
"data": [ 
    { 
     "media_menu_id": "5", 
     "media_menu_name": "Games", 
     "media_menu_url": "", 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "7", 
       "media_menu_name": "Games 2", 
       "media_menu_url": "", 
       "thumbnail": "", 
       "submenu": [ 
        { 
         "media_menu_id": "9", 
         "media_menu_name": "Games 2-2", 
         "media_menu_url": null, 
         "thumbnail": "" 
        }, 
        { 
         "media_menu_id": "8", 
         "media_menu_name": "Games 2-1", 
         "media_menu_url": null, 
         "thumbnail": "" 
        } 
       ] 
      }, 
      { 
       "media_menu_id": "6", 
       "media_menu_name": "Games 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    }, 
    { 
     "media_menu_id": "4", 
     "media_menu_name": "Application", 
     "media_menu_url": null, 
     "thumbnail": "" 
    }, 
    { 
     "media_menu_id": "3", 
     "media_menu_name": "Rich Content", 
     "media_menu_url": null, 
     "thumbnail": "" 
    }, 
    { 
     "media_menu_id": "2", 
     "media_menu_name": "Top Download", 
     "media_menu_url": null, 
     "thumbnail": "" 
    }, 
    { 
     "media_menu_id": "1", 
     "media_menu_name": "Hot Promo", 
     "media_menu_url": "", 
     "thumbnail": "", 
     "submenu": [ 
      { 
       "media_menu_id": "10", 
       "media_menu_name": "Hot Promo 1", 
       "media_menu_url": null, 
       "thumbnail": "" 
      } 
     ] 
    } 
] 

}

THX,

+0

你能在表單中添加一個JSON輸出示例您想?我無法從你的問題中弄清楚。 – Ihsan 2013-03-25 09:46:19

+0

檢查你的循環要插入的元素,在路上你不想。您的結構有些複雜。 – Ihsan 2013-03-25 10:11:20

+0

嘗試添加'$ ARR [ '子菜單'] =陣列()''後如果($ COUNT1> 0)'。在下一個循環之前,可能你只是忘了tu truncate子菜單數組。 – Narek 2013-03-25 10:18:18

回答

0

試試這個請:

foreach($result as $key => $value){ 
    $where1 = array('media_menu_parent_id' => $value['media_menu_id']); 
    $count1 = $this->mediamenumodel->getCountMediaMenu($where1); 
    $getMediaMenu1 = $this->mediamenumodel->getMediaMenu($where1, $count1); 
    $arr = []; // reset before constructing a new parent.. 
+0

不工作我嘗試你的指令* $ ARR = []; * < - 錯誤的語法: - ?爲您的評論和線索 – 2013-03-25 10:40:34

+0

喜@ihsan THX「重置陣列明年第一循環之前」,我試圖用* $ ARR =陣列(); *和工作得很好日冰,, THX所有主:) – 2013-03-25 10:43:58

+0

@AroelHaqi約$ ARR = [];有些編輯稱它爲錯誤,但我沒有看到PHP反對它。而且你很好。 – Ihsan 2013-03-25 11:59:27