在json对象中格式化值 - json_encode()

时间:2014-01-10 08:15:33

标签: php json

我有一个从mysql表中获取值的foreach循环。获取值后,将它们放在数组中,最后转换为json对象。 json对象的格式必须是特定的才能与我当前使用的第三方api一起正常工作。我目前获得的结果将所有值放在json对象中。我的目标是在单独的json对象{},{},etc上配对值。另外,如何在对象中为要获取的值添加标签?

$level_query = $db_con->prepare("SELECT a.type, COUNT(1) AS cnt
FROM academy a
GROUP BY a.type");
$level_query->execute();
$data = $level_query->fetchAll();
$level_data = array();
foreach ($data as $row) {
  $type = $row["type"];
  $level_data[$type] = $row["cnt"];

}  // foreach ($data as $row) {
echo json_encode($level_data);

当前格式:

{" Expert":"12","Intermediate":"512","Beginner":”1002”}

正确/期望的格式格式:

{ level: "Expert", count: 12 },
{ level: "Intermediate", count: 512 },
{ level: "Beginner", count: 1002 }

1 个答案:

答案 0 :(得分:2)

试试这个:

$output = array();
foreach ($data as $row) {
    array_push($output, array('level'=>$row["type"], 'count'=>$row["cnt"]));
}
echo json_encode($output);

所需的格式看起来像一个对象数组,每个对象都包含levelcount属性。

这样的数据:

$data = array(
    array('type'=>'a','cnt'=>1),
    array('type'=>'b','cnt'=>2),
    array('type'=>'c','cnt'=>3),
    array('type'=>'d','cnt'=>4),
    array('type'=>'e','cnt'=>5)
);

这样出来:

[{"level":"a","count":1},{"level":"b","count":2},{"level":"c","count":3},{"level":"d","count":4},{"level":"e","count":5}]