我试图拉出这个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]

09-11 17:27