![](/img/trans.png)
[英]PHP JSON Array - how to modify a json code Group by the same value
[英]PHP JSON Array - Group by the same value
我正在考慮如何通過具有相同值的對象對數組進行分組。
我從MySQL查詢得到這個結果:
Date StartTime EndTime
2014-12-01 08:00 12:00
2014-12-01 10:00 16:00
2014-12-02 12:00 18:00
2014-12-03 10:00 20:00
我在一個名為$Data
的PHP變量中有這些數據。
有可能用php獲取這樣的json數組:?
[
{
"2014-12-01": [
{
"StartTime": "08:00",
"EndTime": "12:00"
},
{
"StartTime": "10:00",
"EndTime": "16:00"
}
]
},
{
"2014-12-02": [
{
"StartTime": "12:00",
"EndTime": "18:00"
}
]
},
{
"2014-12-03": [
{
"StartTime": "10:00",
"EndTime": "20:00"
}
]
}
]
如果我使用echo json_encode($Data)
,結果是:
[
{
"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"
}
]
根據問題中概述的結構:
需要php 5.4+用於json漂亮打印,如果你使用較低版本只需刪除它並使用長數組格式。
$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));
要獲得與問題完全相同的輸出(包含在單個元素json數組中的返回輸出,您需要將$out
包裝在另一個數組中,如下所示:
json_encode([$out], JSON_PRETTY_PRINT)
結果是:
{
"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"
}
]
}
雇主姓名DATA_PATH Alp 1. video_link 2. video_link Xyz 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.