2017-04-21 46 views
0

我在想如何用同一日期的对象对我的数组进行分组。 我从MySQL查询这个结果(选择日期时间,IP,缬氨酸从我的表):创建一个JSON数组对象分组到相同的日期到一个新的数组?

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数组对象组?从MySQL中ASCDSC为了

+0

不清楚,是什么问题? –

+0

对不起。我已经提出了更清楚的问题。 – georgetovrea

+0

你可以添加预期的输出吗? –

回答

1

获取数据,然后这样做: -

$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); 
+0

Ashutosh,我尝试创建数组,然后像你说的那样做,但仍然无法获得我想要的结果。我在我的问题中添加了创建数组代码 – georgetovrea

0

这可能是在Javascript

可以使用UnderscoreJS库这个参考http://underscorejs.org/#groupBy

你可以这样做

“v AR A = [{ '日期时间': '2017年2月1日8时○○分23秒', 'IP':'10 .10.10.1' , '缬氨酸': '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(一个,函数(OBJ){返回新日期(obj.DateTime).toDateString()});”

希望它能帮到你

相关问题