2017-04-21 51 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()});」

希望它能幫到你

相關問題