не получить правильные данные JSON в PHP - PullRequest
0 голосов
/ 05 октября 2018
$events = array();
$employeeData = array();
foreach ($rows as $fetch)
{ 
    $employeeData['start_date'] = $fetch->start_date;
    $employeeData['events']['start_time'] = $fetch->start_time;
    $employeeData['events']['end_time'] = $fetch->end_time;

    $employeeData['events']['name'] = $fetch->FirstName. ' ' .$fetch->LastName;

   array_push($events, $employeeData);
}

$success_status = array(
    'events'=> $events
);

echo json_encode($success_status, true);

Результат ------------

{"events": [{"start_date": "2018-05-27", "events": {"start_time": "11:45:00", "end_time": "13:00:00", "name": "Demo"}}, {"start_date": "2018-06-29", "events ": {" start_time ":" 15:30:00 "," end_time ":" 15:45:00 "," name ":" Demo "}}, {" start_date ":" 2018-06-29 ", "events": {"start_time": "16:30:00", "end_time": "23:45:00", "name": "Demo"}}]}

Я получаю вышеуказанный результат, но мне нужно получить следующий результат

{"events": [{"start_date": "2018-05-27", "events": [{"start_time":" 11:45:00 "," end_time ":" 13:00:00 "," name ":" Demo "}]}, {" start_date ":" 2018-06-29 "," events ":[{"start_time": "15:30:00", "end_time": "15:45:00", "name": "Demo"}, {"start_time": "16:30:00", "end_time":" 23:45:00 "," name ":" Demo "}]}]}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я думаю, что это должно привести к выводу после, это случай добавления дополнительного слоя массивов к данным, которые вы хотите вложить в [{...}] ...

$employeeData['events'][] = ['start_time' => $fetch->start_time, 
                             'end_time' =>$fetch->end_time,
                             'name' => $fetch->FirstName. ' ' .$fetch->LastName ];

Так что это использует [] просто добавить данные в массив, и я обернул элементы в один массив, а не добавил их как элементы.

0 голосов
/ 05 октября 2018

$employeeData['events']['start_time'] в основном создает отдельный элемент в виде ассоциативного массива.То, что вы хотите, это массив элементов событий.Таким образом, вам нужно поместить данные события в массив, а затем добавить этот массив в ваш массив events, например:

$events = array();
$employeeData = array();
foreach ($rows as $fetch)
{ 
    $event = [];
    $employeeData['start_date'] = $fetch->start_date;
    $event['start_time'] = $fetch->start_time;
    $event['end_time'] = $fetch->end_time;

    $event['name'] = $fetch->FirstName. ' ' .$fetch->LastName;
    $employeeData['events'][] = $event;

   array_push($events, $employeeData);
}

$success_status = array(
    'events'=> $events
);

echo json_encode($success_status, true);
...