PHP JSON Array - Group by the same value
Based on the structure outlined in the question:
Requires php 5.4+ for the json pretty printing, if you are on a lower version just remove it and use long array format.
$in = <<<'JSON'[ { "Date": "2014-12-01", "StartTime": "10:00", "EndTime": "16:00" }, { "Date": "2014-12-02", "StartTime": "12:00", "EndTime": "18:00" }, { "Date": "2014-12-03", "StartTime": "10:00", "EndTime": "20:00" }, { "Date": "2014-12-03", "StartTime": "12:00", "EndTime": "20:00" }]JSON;$data = json_decode($in, true);$out = [];foreach($data as $element) { $out[$element['Date']][] = ['StartTime' => $element['StartTime'], 'EndTime' => $element['EndTime']];}var_dump(json_encode($out, JSON_PRETTY_PRINT));
To get the exact same output as in the question (the returned output wrapped in a single element json-array you'd need to wrap $out
in an other array like this:
json_encode([$out], JSON_PRETTY_PRINT)
Results in:
{ "2014-12-01": [ { "StartTime": "10:00", "EndTime": "16:00" } ], "2014-12-02": [ { "StartTime": "12:00", "EndTime": "18:00" } ], "2014-12-03": [ { "StartTime": "10:00", "EndTime": "20:00" }, { "StartTime": "12:00", "EndTime": "20:00" } ]}
EMPLOYER NAME DATA_PATHAlp 1. video_link 2. video_linkXyz 1. video_link 2. video_link 3. video_link
$stmt = $this->conn->prepare("SELECT a.employer_name,b.data_path FROM rec_experience a INNER JOIN rec_multi_upload_data b ON(a.rec_uniqueid=b.rec_id) WHERE b.data_type='Video' ORDER BY a.c_date DESC ");$stmt->execute();$res = $stmt->fetchAll(PDO::FETCH_ASSOC);$out = [];foreach($res as $element){ $out[$element['employer_name']][] = ['video_link' => $element['data_path']];}echo json_encode($out);