添加到阵列以生成格式化的jSON数据


Adding to an Array to produce formatted jSON Data

我需要在这个堆栈溢出问题上生成一个类似jSON数组的答案#2

    [
  {
    "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文件相同的形式返回。

我的代码如下:

    $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和数组类型的问题。

感谢

每次循环时都会覆盖数组。您需要一个多维数组。类似这样的东西:

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。您可能想要合并它们,或者只在两个循环中创建相同的数组。