从MySQL到数组JSON的输出数据使我发疯



我试图以这种JSON格式拔出菜单:检查输出:http://www.alacarta.do/iphone/webservices/restaurants_menu2.php?r=415

是,迭代板,它重复了板,然后在每个类别中添加相应的正确板。每时每刻。检查链接中的输出。第一类是分享。板子还可以,但是第二类弗里斯栏将再次将盘子扔向分享,然后将正确的板列入其类别

<?
$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);

to

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

注意 - 很难遵循您的所有代码逻辑,因此[$orden->id_tipo]可能需要是[$orden->id_empresa],或者可能是每个循环中增加的计数器var [$x]

最新更新