我试图拉出这个json格式的菜单:
检查输出:http://www.alacarta.do/iphone/webservices/restaurants_menu2.php?r=415
事情是迭代类别板,它会复制这些板,然后在每个类别中添加相应的正确板。每时每刻。检查链接中的输出。第一类是“分享”。板还可以,但是第二类“油炸条”会再次从“ TO SHARE”中抛出板,然后再抛出该类别中的正确板
<?
$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));
?>
最佳答案
您的问题可能是这条线-
$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]
,或者可能是在每个循环中增加的类似计数器var [$x]
。