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

时间:2016-05-16 15:53:31

标签: php jquery json

我需要在Stackoverflow Question

上生成一个类似于答案#2的jSON数组
    [
  {
    "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的威尔士银行假期,我正在从我的数据库选择中获得用户假期......

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

我需要银行假日和假日全部以与上面链接的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和数组类型的问题。

由于

1 个答案:

答案 0 :(得分:0)

每次循环都会覆盖数组。你需要一个多维数组。像这样:

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