将两个查询合并到一个JSON对象

时间:2014-07-09 15:20:50

标签: php json merge

我有两个问题:

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?

3 个答案:

答案 0 :(得分: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;
}

我正在假设你的应用程序中的哪些东西是关联数组和对象。您应该能够根据具体实施进行调整。

答案 1 :(得分:0)

嗨,好像你有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)

答案 2 :(得分:0)

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

我认为你已经拥有的其他解决方案。