2015-06-13 37 views
1

我在想如何通过使用相同的值对象群我的数组。PHP JSON集团以相同的数值

我从MySQL查询结果如下:

 
| Id | Name  |  Date  | Value | 
|----|-------------|--------------|---------| 
| 1 | Jeff  | 2014-12-01 | 5 |   
| 1 | Jeff  | 2015-12-01 | 8 | 
| 2 | David | 2014-12-01 | 7 |  
| 2 | David | 2015-12-01 | 6 | 

如果我使用echo json_encode():

 

$json = array(); 

    while($row = mysqli_fetch_assoc($result)) {    
     $bus = [ 
     'id' => $row["id"], 
     'name' => $row["name"], 
     'date' => $row["date"], 
     'value' => $row["value"] 
     ]; 

     array_push($json, $bus);  
     } 

echo json_encode($json); 

结果是:

 
[ 

    { 
     "Id": "1", 
     "Name": "Jeff", 
     "Date": "2014-12-01", 
     "Value": "5" 
    }, 
    { 
     "Id": "1", 
     "Name": "Jeff", 
     "Date": "2015-12-01", 
     "Value": "8" 
    }, 
    { 
     "Id": "2", 
     "Name": "David", 
     "Date": "2014-12-01", 
     "Value": "7" 
    }, 
    { 
     "Id": "2", 
     "Name": "David", 
     "Date": "2015-12-01", 
     "Value": "6" 
    } 


] 

但是,是否有可能使用php来获得像这样的json数组?

 
[ 

    { 
     "Id": "1", 
     "Name": "Jeff", 
     "Values":[ 
       { 
       "2014-12-01": "5", 
       "2015-12-01": "8" 
       } 
        ] 
    }, 
    { 
     "Id": "2", 
     "Name": "David", 
     "Values":[ 
       { 
       "2014-12-01": "7", 
       "2015-12-01": "6" 
       } 
        ] 
    } 

] 
+0

你也许可以解析PHP中返回的数据。我没有足够的那种语言来回答。 –

+0

显示您从DB获取记录的代码 –

+0

我在代码中添加了从DB获取记录的代码 – nico

回答

0

试试这个

<?php 

$json = array(); 

while ($row = mysqli_fetch_assoc($result)) { 

    if (is_array($json)) { 
     foreach ($json as $key => $val) { 
      if ($val['Id'] == $row["id"]) { 
       $json[$key]['date'][] = $row["date"]; 
       continue; 
      } 
     } 
    } 
    $json[] = array(
     'id' => $row["id"], 
     'name' => $row["name"], 
     'date' => array($row["date"]), 
     'value' => $row["value"]); 
} 

echo json_encode($json); 
+0

如果您下降旗,不给理由 –

+1

在这里,我会帮你走出这是瘸子。即使我不知道为什么它被标记了下来。 – RepeaterCreeper

0

我不知道这是否是posiable得到你想要的只是使用SQL数据。

通常情况下,我会做这个工作用PHP

<?php 
$json = array(); 

foreach ($array as $idx => $data) { 
    //Id is not exists in json,create new data 
    if(!array_key_exists($data['Id'], $json)){//Id is unique in db,use Id for index ,you can find it easily 
     $json[$data['Id']]=array(
      'Id' =>$data['Id'], 
      'Name'=>$data['Name'], 
      'Value'=>array(
        $data['Date']=>$data['Value'] 
       ) 
     ); 
     continue; 
    } 

    //Id is exists in json, append value 
    $json[$data['Id']]['Value'][$data['Date']] =$data['Value']; 
} 
$json = json_encode($json); 

希望我能帮助你