php - 合并来自mysql的php中的两个数组并转换为json

标签 php mysql arrays json

我有两个数组,我想将它们合并并将值映射在一起,其中 id 相同。问题是当我使用 array_merge 函数时,它只合并两个数组,并且生成的 json 不适合我在 android 中的模型。

这是 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,email,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"
 }

最佳答案

这是构建 JSON 的方法:

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;
}

请注意,为了避免重复 p_id,我将其用作 key 。每个键都与一个项目数组相关联。

关于php - 合并来自mysql的php中的两个数组并转换为json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41879396/

相关文章:

php - 从android输入数据到mysql数据库

php - mysql的代码点火器:通过设置添加值?

python - Scipy.integrate浮点错误

PHP - MySql SELECT WHERE 值 = 字符串 JSON

c - 动态使用 malloc() 的多维 (2D) 数组?

php - 使用带有特殊字符的字符串时,str_split() 在 PHP 中无法正常工作

php - php 中的字符串/段落/文档比较

c++ - 连接字符串最好的方法是什么?

php - 限制对特定页面的访问

mysql - MYSQL 中的 REGEX 不起作用?