在PHP中构建一个多维json数组

时间:2014-01-13 13:28:30

标签: php mysql json multidimensional-array

我希望从通过sql查询返回的表中使用特定json格式的多维数组。该表如下所示:(原谅原始格式)

|日期|数|姓名|

| 2013-12-19 | 252 |价值1 |

| 2013-12-19 | 60 |价值2 |

| 2013-12-19 | 8 |价值3 |

| 2013-12-26 | 173 |价值1 |

| 2013-12-26 | 32 |价值2 |

| 2013-12-26 | 6 |价值3 |

我想要一个下面提到的格式的多维json数组:

{2013-12-19:[{Name:“Value 1”,Count:“252”},{Name:“Value 2”,Count:“60”},{Name:“Value 3”,Count : “8”}],

2013-12-26:[{Name:“Value 1”,Count:“173”},{Name:“Value 2”,Count:“32”},{Name:“Value 3”,Count: “6”}] }

我尝试了一个代码但是在添加该数组中的所有日期值时遇到了麻烦。 以下是我尝试的示例代码:

    $query2_result = mysql_query($query2) or die(mysql_error());
    $rows_query2 = mysql_num_rows($query2_result);
    $records = array();

    if($rows_query2 > 0) {
     while($r = mysql_fetch_array($query2_result)) {
        if(!array_key_exists($r[date][name],$records[$r[date]])) {
                    $records[$r[date]][name] = array();

        }

         $records[$r[date]]["count"] = $r[count];
         $records[$r[date]]["name"] = $r[name];
      }
    }
    echo json_encode($records);

我提到的每个日期只有一个数组。像这样:

{“2013-12-19”:{“name”:“Value 1”,“count”:“775”},“2013-12-26”:{“name”:“Value 1”,“数“:”397“}}

Kindle帮助我。谢谢你。

3 个答案:

答案 0 :(得分:1)

 $records = array();

 if($rows_query2 > 0) {
 while($r = mysql_fetch_array($query2_result)) {
      $records[$r['date']][] = array('name'=>$r['name'],'count'=>$r['count']);
 }

答案 1 :(得分:0)

我认为你需要做的就是将给定日期的所有记录添加到子数组中:

$records[$r[date]][] = $r;

答案 2 :(得分:0)

更改逻辑时低于一

while($r = mysql_fetch_array($query2_result)) {
    $records[$r["date"]][]  = array(  "Name" => $r["name"], "Count" => $r["count"]);
}