2015-05-03 66 views
1

即時通訊試圖拉出一個菜單在這個JSON格式: 檢查輸出:http://www.alacarta.do/iphone/webservices/restaurants_menu2.php?r=415輸出數據快把我逼瘋了

的東西是分類板是迭代,它複製了板和然後在每個類別中添加相應的正確部分。每時每刻。檢查鏈接中的輸出。第一類是分享。而這些板塊都不錯,但第二類FRIES BAR,將引發再從板佳品,然後在其類別的正確板

<? 

$where = empty($_GET['r'])? NULL : 'id = '. intval($_GET['r']); 
$restaurant = $cmp->empresas($where,"nombre ASC")->fetch(); 
$json = array(); 
$arraynombre = array(); 

     while($orden = $cmp->platos_tipos_orden("id_empresa = {$restaurant->id}","orden ASC")->foreachrow()): 

     $tipo = $cmp->platos_tipos("id = {$orden->id_tipo}")->fetch(); 

      while($menu = $cmp->platos_menu("id_tipo = {$orden->id_tipo} AND id_empresa = {$orden->id_empresa}")->foreachrow()):    
      $p = $cmp->platos_lista("id = {$menu->id_plato}")->fetch(); 
      $pnombre = $p->nombre; 
      $pid = $p->id; 
      $pprecio = $p->precio; 
      $arraynombre1 = array('plato_id'=>$pid,'plato_nombre'=>$pnombre,'precio'=>$pprecio); 

       if (in_array($arraynombre1['plato_id'], $arraynombre['plato_id'])) continue; 

      $arraynombre[] = $arraynombre1; 

endwhile; 


$jsondata = array('tipo'=> utf8_decode($tipo->nombre),'platos' => $arraynombre); 
$json[] = $jsondata;    
endwhile; 


     echo json_encode(array("menu"=>$json)); 

?> 

回答

0

您的問題可能是這條線 -

$arraynombre[] = $arraynombre1; 

隨着您不斷添加到數組中,不會覆蓋以前的循環值。

嘗試爲每個循環添加一個唯一的密鑰,即。 $orden->id_tipo -

$arraynombre[$orden->id_tipo][] = $arraynombre1; 

然後,你還需要改變

$jsondata = array('tipo'=> utf8_decode($tipo->nombre),'platos' => $arraynombre); 

$jsondata = array('tipo'=> utf8_decode($tipo->nombre),'platos' => $arraynombre[$orden->id_tipo]); 

注意 - 這是很難按照你的所有代碼邏輯,所以[$orden->id_tipo]可能需要成爲[$orden->id_empresa]或者可以是類似的計數器變量[$x]你在每個循環中增加。

+0

它工作!非常感謝!!!! –