创建循环以输出json_encode以从两个不同的表中获得多维数组

时间:2014-05-07 11:39:45

标签: php arrays json loops while-loop

我需要为我的Android应用程序创建一个Web服务并在json中输出到目前为止所有获得的服务我创建的工作正常但现在我不得不为我的getOrders服务创建多维数组。我正在使用array_push进行其他服务。这是我的代码我现在不知道该如何处理它以使其工作。

elseif($tag == 'getOrders'){
    $query = mysqli_query($dbc, "SELECT * FROM orders JOIN orderprod ON orders.OID = orderprod.OID WHERE orders.OrderBy = 'admin'");
    $count = mysqli_num_rows($query);
    $i = 0;
    header('Content-type: application/json');

    while($i < $count){
    $row = mysqli_fetch_array($query);
    // check if user is already existed
        // user is already existed - error response
        $response["success"] = 1;
        $response["orders"]["OID"] = $row["OID"];
        $response["orders"]["OrderNumber"] = $row["OrderNumber"];
        $response["orders"]["SID"] = $row["SID"];
        $response["orders"]["OrderBy"] = $row["OrderBy"];
        $response["orders"]["OrderNotes"] = $row["OrderNotes"];
        $response["orders"]["OrderLocation"] = $row["OrderLocation"];
        $response["orders"]["OrderDT"] = $row["OrderDT"];
        $response["orders"]["SyncDT"] = $row["SyncDT"];
        $response["orders"]["Discount"] = $row["Discount"];
        $response["orders"]["Status"] = $row["Status"];

        $OID = $row['OID'];
        $query2 = mysqli_query($dbc, "SELECT * FROM orders JOIN orderprod ON orders.OID = orderprod.OID WHERE orders.OID = '$OID'");
        $count2 = mysqli_num_rows($query2);
        $u = 0;
        while($u < $count2){
        $PID = mysqli_fetch_array($query2);
        $response1["orders"]["PID"] = $PID["PID"];
        $response1["orders"]["Qty"] = $PID["Qty"];
        array_push($return_arr, $response1);
        $u++;
        }
        array_push($return_arr, $response);
        $i++;
        }
echo json_encode($return_arr);

这是我想要的结果

[{"tag":"getOrders","success":1,"error":0,"orders":{"OID":"2","OrderNumber":"2","SID":"2","OrderBy":"admin","OrderNotes":"none","OrderLocation":"123","OrderDT":"2014-04-27 11:02:03","SyncDT":"0000-00-00 00:00:00","Discount":"0","Status":"Completed","PID":[{"PID":"9","Qty":"1"},{"PID":"2","Qty":"1"}]}}]

哦,顺便说一下,我仍然是php的精彩内容的新手,这是我的第一个json输出项目所以请详细解释:)谢谢大家都爱你们,你们都非常乐于助人。

以下解决

'elseif($tag == 'getOrders'){
    $user = $_GET['user'];
    $query = mysqli_query($dbc, "SELECT * FROM orders JOIN orderprod ON orders.OID = orderprod.OID WHERE orders.OrderBy = '$user'");
    $count = mysqli_num_rows($query);
    $i = 0;
    header('Content-type: application/json');
    $POID = 0;      
    while($i < $count){
    $row = mysqli_fetch_array($query);

    $OID = $row['OID'];

    if($OID != $POID){
        $response["success"] = 1;
        $response["orders"]["OID"] = $row["OID"];
        $response["orders"]["OrderNumber"] = $row["OrderNumber"];
        $response["orders"]["SID"] = $row["SID"];
        $response["orders"]["OrderBy"] = $row["OrderBy"];
        $response["orders"]["OrderNotes"] = $row["OrderNotes"];
        $response["orders"]["OrderLocation"] = $row["OrderLocation"];
        $response["orders"]["OrderDT"] = $row["OrderDT"];
        $response["orders"]["SyncDT"] = $row["SyncDT"];
        $response["orders"]["Discount"] = $row["Discount"];
        $response["orders"]["Status"] = $row["Status"];
        $response["orders"]["PID"] = array();

        $OID = $row['OID'];
        $query2 = mysqli_query($dbc, "SELECT b.*, c.* FROM orderprod b, products c WHERE b.PID = c.PID AND b.OID = '$OID'");
        $count2 = mysqli_num_rows($query2);

        $u = 0;
        while($u < $count2){
        $PID = mysqli_fetch_array($query2);
        $response1["ProdName"] = $PID["ProdName"];
        $response1["Qty"] = $PID["Qty"];
        array_push($response["orders"]["PID"], $response1);

        $POID = $PID['OID'];
        $u++;
        }
        array_push($return_arr, $response);
        }
        $i++;
        }   

    }'

0 个答案:

没有答案