2017-01-26 5 views
0

私は、マージして値をマップする2つの配列を持っています。問題は、私はarray_merge関数を2つの配列をマージするだけで結果のjsonがアンドロイドに私のモデルに合わないということです。ここでmysqlからphpで2つの配列をマージしてjsonに変換する

は、PHPの関数である: - ここに

public function getfromorders(){ 
    $sql = 'SELECT * FROM p_orders'; 
    $query = $this -> conn -> prepare($sql); 
    $query -> execute(array()); 
    $pro1=array(); 
    $orders =array(); 
    while($data = $query -> fetch(PDO::FETCH_OBJ)) 
    { 
     $orders[] = $data; 
    $pro1[] = $data -> p_id;  
    } 
    $pro=array(); 
    foreach ($pro1 as $id0) { 
    $sql = 'SELECT * FROM products WHERE p_id = :p_id'; 
    $query2 = $this -> conn -> prepare($sql); 
    $query2 -> execute(array(':p_id' => $id0)); 
     while($products = $query2 -> fetch(PDO::FETCH_OBJ)) 
     { 
     $pro[] = $products; 
     } 
    } 
    return array_merge($pro,$orders); 
} 

は、JSON結果れる: -

{ 
"products": [ 
    { 
    "p_id": "4", 
    "p_name": "Data Structures and algorithm in C++", 
    "p_info": "Adam Drozdek", 
    "p_sold": "Book Available : 20", 
    "p_image": "http://www.buildupcareer.com/gauti/Hunt/Food.jpg", 
    "p_type": "Veg", 
    "p_star": "0" 
}, 
{ 
    "p_id": "12", 
    "p_name": " Kadai Paneer", 
    "p_info": "An Indian vegetarian dish made with cottage cheese cooked with tomatoes-onions-bell peppers- and a blend of Indian spices", 
    "p_sold": "Spicy", 
    "p_image": "http://www.buildupcareer.com/gauti/Hunt/Burger.jpg", 
    "p_type": "Start-ups", 
    "p_star": "0" 
}, 
{ 
    "email": "7827789246", 
    "p_id": "4", 
    "noi": "1", 
    "order_id": "36" 
}, 
{ 
    "email": "7827789246", 
    "p_id": "12", 
    "noi": "1", 
    "order_id": "35" 
    } 
], 
"result": "success" 
} 

を私は結果のJSONは(と(P_ID、電子メール、NOI、ORDER_ID)をマージする必要があることしたいですp_id、p_name、p_info ......)を変更することなく、mysqlデータベースを変更することができます。これを達成する方法はありますか?ここで

は私の予想されるJSONです: -

{ 
    "products": [ 
{ 
    "p_id": "4", 
    "p_name": "Data Structures and algorithm in C++", 
    "p_info": "Adam Drozdek", 
    "p_sold": "Book Available : 20", 
    "p_image": "http://www.buildupcareer.com/gauti/Hunt/Food.jpg", 
    "p_type": "Veg", 
    "p_star": "0", 
    "email": "7827789246", 
    "noi": "1", 
    "order_id": "36" 
}, 
{ 
    "p_id": "12", 
    "p_name": " Kadai Paneer", 
    "p_info": "An Indian vegetarian dish made with cottage cheese cooked with tomatoes-onions-bell peppers- and a blend of Indian spices", 
    "p_sold": "Spicy", 
    "p_image": "http://www.buildupcareer.com/gauti/Hunt/Burger.jpg", 
    "p_type": "Start-ups", 
    "p_star": "0", 
    "email": "7827789246", 
    "p_id": "12", 
    "noi": "1", 
    "order_id": "35" 
    } 
], 
"result": "success" 
} 
+1

私たちに '$ pro'、' $ products'と期待される出力のいくつかの例を教えてください。 –

+0

それでは、ここに問題があります。複数の注文が同じ製品の場合はどうなりますか?あなたのJSONはどのように見えますか? –

+0

私はそれを編集し、予想される出力を含めました。 –

答えて

1

これはあなたのJSONを構築することができる方法である:p_idの重複を避けるために

while($products = $query2 -> fetch(PDO::FETCH_OBJ)) { 
    $newElement = array(); 
    foreach($products as $key => value) { 
     if ($key !== "p_id") { 
      $newElement[$key] = $value; 
     } 
    } 
    if (!isset($pro[$products["p_id"]])) { 
     $pro["p_id"] = array(); 
    } 
    $pro["p_id"][]=$newElement; 
} 

注、私はキーとしてそれを使用しています。各キーは項目の配列に関連付けられています。

+0

私は配列をマージする必要があります。 –

関連する問題