我正在考虑如何使用相同日期的对象对数组进行分组。 我从MySQL查询得到这个结果(从我的表中选择DateTime,ip,Val):
DateTime ip Val
2017-02-01 08:00:23 10.10.10.1 2
2017-02-01 09:01:23 10.10.10.2 3
2017-02-01 12:02:23 10.10.10.3 4
2017-02-02 13:03:23 10.10.10.4 5
2017-02-03 15:04:23 10.10.10.5 6
2017-02-03 20:05:23 10.10.10.6 7
从mysql查询结果创建json数组对象,如下所示,
$sql = "select DateTime ,ip,Val from my table order by DateTime ASC ;";
$result = $db->query($sql);
$data = array();
$rowary = array();
$i=0;
while($row = mysqli_fetch_array($result))
{
$rowary['DateTime'] = $row['DateTime '] ;
$rowary['ip'] = $row['ip'] ;
$rowary['Val'] = $row['Val'] ;
$data[$i++]=$rowary;
}
echo '<pre>' . var_export($data, true) . '</pre>';
是否可以创建一个按相同日期分组的JSON数组对象如果我使用
var data = <?php echo json_encode($Data, JSON_PRETTY_PRINT);?>
在javascript中,
预期结果是:
[
[
{
"DateTime": "2017-02-01 08:00:23",
"ip": "10.10.10.1",
"Val": "2"
},
{
"DateTime": "2017-02-01 09:01:23",
"ip": "10.10.10.2",
"Val": "3"
},
{
"DateTime": "2017-02-01 12:02:23",
"ip": "10.10.10.3",
"Val": "4"
}
],
[
{
"DateTime": "2017-02-02 13:03:23",
"ip": "10.10.10.4",
"Val": "5"
}
],
[
{
"DateTime": "2017-02-03 15:04:23",
"ip": "10.10.10.5",
"Val": "6"
},
{
"DateTime": "2017-02-03 20:05:23",
"ip": "10.10.10.6",
"Val": "7"
}
]
]
如何创建按同一日期分组的JSON数组对象?
答案 0 :(得分:1)
以 asc 或 dsc 顺序从mySQL获取数据,然后执行以下操作: -
$a = array(
array(
'DateTime' => '2017-02-01 08:00:23',
'ip' => '10.10.10.1',
'Val' => '1'
),
array(
'DateTime' => '2017-02-01 09:01:23',
'ip' => '10.10.10.2',
'Val' => '2'
),
array(
'DateTime' => '2017-02-02 09:01:23',
'ip' => '10.10.10.3',
'Val' => '3'
),
array(
'DateTime' => '2017-02-02 13:03:23',
'ip' => '10.10.10.4',
'Val' => '4'
),
array(
'DateTime' => '2017-02-03 15:04:23',
'ip' => '10.10.10.5',
'Val' => '5'
),
array(
'DateTime' => '2017-02-03 20:05:23',
'ip' => '10.10.10.6',
'Val' => '6'
),
);
$FirstDate = date('Y-m-d', strtotime($a[0]['DateTime']));
$output = array();
$i = 0;
foreach($a as $value){
$currentDate = date('Y-m-d', strtotime($value['DateTime']));
if($currentDate != $FirstDate){
$i++;
$FirstDate = $currentDate;
}
$output[$i][] = $value;
}
var_dump($output);
答案 1 :(得分:0)
这可能是在Javascript中
您可以将UnderscoreJS库用于此引用http://underscorejs.org/#groupBy
你可以这样做
“var a = [ { 'DateTime':'2017-02-01 08:00:23', 'ip':'10 .10.10.1', 'Val':'1' },
{
'DateTime' :'2017-02-01 09:01:23',
'ip' :'10.10.10.2',
'Val' : '2'
},
{
'DateTime' :'2017-02-02 09:01:23',
'ip' :'10.10.10.3',
'Val' : '3'
},
{
'DateTime' :'2017-02-02 13:03:23',
'ip' :'10.10.10.4',
'Val' : '4'
},
{
'DateTime' :'2017-02-03 15:04:23',
'ip' :'10.10.10.5',
'Val' : '5'
},
{
'DateTime' :'2017-02-03 20:05:23',
'ip' :'10.10.10.6',
'Val' : '6'
}];
然后用户_.groupBy这样的功能
_.groupBy(a,function(obj){return new Date(obj.DateTime).toDateString()});“
希望它能帮到你