首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到数组以生成格式化的jSON数据

添加到数组以生成格式化的jSON数据
EN

Stack Overflow用户
提问于 2016-05-16 15:53:31
回答 1查看 91关注 0票数 0

我需要在这个jSON上生成一个类似于答案#2的Stackoverflow Question数组

代码语言:javascript
复制
    [
  {
    "title": "Ceramics",
    "id": "821",
    "start": "2014-11-13 09:00:00",
    "end": "2014-11-13 10:30:00"
  },
  {
    "title": "Zippy",
    "id": "822",
    "start": "2014-11-13 10:00:00",
    "end": "2014-11-13 11:30:00"
  }
]

我正在从API中获得英国和威尔士银行假日,我从我的DB选择中得到用户的假期.

所有数据都是正确的,但目前我只从$holidays数组中得到一个项。

我需要银行假日和假日都以与上面链接的jSON文档相同的形式返回。

我的代码如下:

代码语言:javascript
复制
    $holidays = DB::table('holiday_requests')
        ->where('status', 'accepted')
        ->join('users', 'users.user_id', '=', 'holiday_requests.user_id')
        ->select('users.user_firstname', 'users.user_surname', 'holiday_requests.holiday_request_date_from', 'holiday_requests.holiday_request_date_to', 'holiday_requests.holiday_request_id')
        ->get();

    $bank_holidays = array();
    $holidays_array = array();

    // Get Bank Holiday jSon From External Source...
    $uri = 'https://www.gov.uk/bank-holidays.json';

    // Get the Results and return as a JSON Object
    $json_data = @file_get_contents($uri);

    // Decode The JSON Object
    $json_output = json_decode($json_data);

    $england_wales = "england-and-wales";

    if ($json_output)
    {
        foreach($json_output->$england_wales->events as $event)
        {
            $bank_holidays['title'] = $event->title;
            $bank_holidays['start'] = $event->date;
            $bank_holidays['end'] = $event->date;
        }
    }

    foreach($holidays as $holiday)
    {
        $holidays_array['title'] = $holiday->user_firstname;
        $holidays_array['title'].= " ";
        $holidays_array['title'].= $holiday->user_surname;
        $holidays_array['title'].= " - ";
        $holidays_array['title'].= "Holiday";
        $holidays_array['id'] = $holiday->holiday_request_id;
        $holidays_array['start'] = $holiday->holiday_request_date_from;
        $holidays_array['end'] = $holiday->holiday_request_date_to;
    }

    return Response::json(array($bank_holidays));

值得一提的是,我使用的是Laravel,但是这更像是一个特定的PHP和Array类型问题。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-16 16:08:03

每次遍历循环时都要覆盖数组。您需要一个多维数组。就像这样:

代码语言:javascript
复制
foreach($json_output->$england_wales->events as $event)
{
    $bank_holidays[] = array('title' => $event->title,
                             'start' => $event->date,
                             'end'   => $event->date);
}

然后对下一个循环执行同样的操作,但是,您正在创建$bank_holidays$holidays_array,但只返回$bank_holidays。您可能想要合并它们,或者只是在两个循环中创建相同的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37258094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档