Php 创建一个JSON数组对象-按相同日期分组到一个新数组中?
我正在考虑如何按具有相同日期的对象对数组进行分组。 我从MySQL QuerySelectDateTime、ip、Val表中得到以下结果:Php 创建一个JSON数组对象-按相同日期分组到一个新数组中?,php,arrays,json,Php,Arrays,Json,我正在考虑如何按具有相同日期的对象对数组进行分组。 我从MySQL QuerySelectDateTime、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
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数组对象?以asc或dsc顺序从mySQL获取数据,然后执行以下操作:-
{
'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'
}];
这可以是Javascript 您可以使用下划线JS库进行此引用 你可以这样做 变量a=[ { “日期时间”:“2017-02-01 08:00:23”, ‘ip’:‘10.10.10.1’, “Val”:“1” }, 然后用户u.groupBy函数如下 _.groupBya,functionobj{返回新的Dateobj.DateTime.toDateString}
希望它能帮助您不清楚,问题是什么?对不起,我已经把问题弄清楚了。您能添加预期的输出吗?我已经添加了预期的结果请检查答案Autosh,我已经尝试创建了数组,然后按照您说的做,但仍然无法得到我想要的结果。我在问题中添加了创建数组代码
[
[
{
"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"
}
]
]
$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);
{
'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'
}];