2016-05-14 39 views
0

对不起,如果我的问题有点混乱。 下面是我的JSON输出形式的mysql:格式化json数据。如何合并与键值相同的json数组?

[{"ID":"2","BatchID":"0","Day":"Sunday","Low":"01:15","High":"02.45","Mid": "01:30 01:45 02:00 02:15 02:30"}, {"ID":"1","BatchID":"0","Day":"Sunday","Low":"00.45","High":"00:30","Mid":" 01:30 01:45 02:00 02:15 02:30"}] 

我想用一天“星期天”,在这种情况下,合并这两个对象,形成这样的事情:

"Sunday":[ 
     { 
      "low":"00:15", 
      "high":"00.45", 
      "mid":["00:30"] 
     }, 
     { 
      "low":"01:15", 
      "high":"02.45", 
      "mid":["01:30","01:45","02:00","02:15","02:30"] 
     } 

    ] 

也,是有没有什么工具可以帮助我在php中制作模型以将其保存在数据库中?

在此先感谢。

最大

+0

PS:我的PHP对象看起来像这样:阵列([0] => stdClass的对象([ID] => 2 [BatchID] => 0 [天] =>星期日[低] => 01:15 [高] => 02.45 [中] => 01:30 01:45 02:00 02:15 02:30)[1] => stdClass对象([ID] => 1 [BatchID] => 0 [Day] => Sunday [Low] => 00.45 [High] => 00:30 [Mid] => 01:30 01:45 02:00 02:15 02:30)) – Maxxer

回答

3

您可以使用类似:

$data = json_decode($mysql_data, true); 
$res = []; 
foreach ($data as $d) 
{ 
    $add = ['low' => $d['Low'], 
      'high' => $d['High'], 
      'mid' => explode(' ', trim($d['Mid']))]; 
    if (!isset($res[$d['Day']])) 
     $res[$d['Day']] = $add; 
    else 
     $res[$d['Day']][] = $add; 
} 
$pretty_data = json_encode($res); 
+0

Thank你Ebahi,你救了我整个晚上! :))我删除了条件,它的作用就像一个魅力;)/ * if(!isset($ res [$ d ['Day']])) $ res [$ d ['Day']] = $加; 其他 * / – Maxxer

1

为对方的回答表明,你可以在PHP重组。还可以重新组织在Javascript:

var values = [{"ID":"2","BatchID":"0","Day":"Sunday","Low":"01:15","High":"02.45","Mid": "01:30 01:45 02:00 02:15 02:30"}, {"ID":"1","BatchID":"0","Day":"Sunday","Low":"00.45","High":"00:30","Mid":" 01:30 01:45 02:00 02:15 02:30"}]; 

var final = {}; 
values.forEach(function(element, index, array) { 
    if (!final[element.Day]) 
     final[element.Day] = []; 

    final[element.Day].push(
     { 
      "low": element.Low, 
      "high": element.High, 
      "mid": element.Mid.split(" ") 
     } 
    ); 
});