【问题标题】:Merging two queries to one JSON object将两个查询合并到一个 JSON 对象
【发布时间】:2014-07-09 15:20:49
【问题描述】:

我有两个疑问:

1) $result = $this->_db->get_where("wishes",array("is_open"=>1))->result_array();
2) $requirements_result = $this->_db->get("requirements")->result_array();

我正在尝试以这种 JSON 格式输出数据:

{
    [
      {
        id:12,
        title:"Meet Messi",
        image_url:"http://dsadsa.dsadsa",
        previewImageUrl:"http://kdjfla.com"
        is_open:"true"
        requirements: [
      {
        id: 123,
        title:"kiss Messi",
        is_complete: true
      }
    ]
      }

    ]
  }
}

我创建了两个模型(每个查询一个)。 这是我到目前为止所做的:

$result = $this->_db->get_where("wishes",array("is_open"=>1))->result_array();
$requirements_result = $this->_db->get("requirements")->result_array();

$return_array = array();
foreach ($result as $value)
{                   
    $wishes_model = new wishes_model(); 
    $wishes_model->init_wishes($value);
    $return_array[] = $wishes_model;
}
return $return_array;

如何插入需求结果来创建这个 JSON?

【问题讨论】:

  • 什么是数据库 API?你需要写一个JOIN,它提供了一种方法吗?
  • 是的,我可以写一个 JOIN。问题是以这种 JSON 格式组织的
  • 循环遍历结果。如果wishes ID 与前一个相同,则将requirements 列添加到requirements 数组中。如果没有,请向$return_array 添加一个新的wishes 元素。

标签: php json merge


【解决方案1】:

首先,将您的wishes 数组创建为关联数组,ID 为键:

$wishes_array = array();
foreach ($results as $value) {
    $wishes_model = new wishes_model();
    $wishes_model->init_wishes($value);
    $wishes_array[$value['id']] = $wishes_model;
}

然后您可以将需求添加到相应的愿望中:

foreach ($requirements_results as $req) {
    $wishes_array[$req['wish_id']]->requirements[] = $req;
}

我正在对您的应用程序中的哪些内容是关联数组与对象进行一些假设。您应该能够调整它以匹配您的具体实现。

【讨论】:

    【解决方案2】:

    我有几个问题,但现在我猜。 您可以尝试array_merge,但它会覆盖相同的键。 如果您不希望这样,您可以为键添加前缀,然后合并两个数组。

    我认为您在这里已经拥有的其他解决方案。

    【讨论】:

      【解决方案3】:

      您好,您有 2 个结果,例如 result1 和 result2

      您可以为每个循环创建 2 个 foreach 循环并将它们存储在两个不同的数组中,然后 你让它在结果中传递并对其进行编码。

      看看它是如何工作的:

      foreach ($result1 as $res)
      {
          $result_s1[]=$res;
      }
      foreach($result2 as $cmd)
      {
         result_s1[]=$cmd;
      }
      $resultdata[]=array_merge($result_s1,$result_s2)
      

      【讨论】:

      • 这不会给出他想要的结果。 requirements 应该是对应的 wishes 元素的一个元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      相关资源
      最近更新 更多