返回JSON格式,PHP

时间:2014-03-22 14:05:29

标签: php json

在一个项目中,我必须从数据库返回user_id,user_age,返回格式应该是

  
      
  • 用户对象,其中包含user_id和user_age
  •   
  • 平均用户年龄
  •   
  • 用户数
  •   

返回格式应为JSON格式。 我已经使用方法

创建了用户数组并编码为 JSON
  

json_encode(用户);

我的代码是这样的:

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

        $user["id"]                 = $row["id"];
        $user["name"]               = ucfirst($row["user_name"]);
        $user["date"]               = $row["date_of_treatment"];
        $user["age"]                = $row["age_of_user"];

        // push single user into final response array
        array_push($response, $user);

        $count = $count+1;
        $sum_of_age = $sum_of_age+$row["age_of_user"];

    }

echo json_encode($response);

我已经计算了平均年龄($ sum_of_age / $ count)和返回用户数($ count),但我不知道如何返回具有相同json响应的平均年龄和用户数。将不胜感激。

3 个答案:

答案 0 :(得分:3)

你可以这样做:

$count=0;
$sum_of_age=0;
$response=array();
$response['users']=array();


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

    $user["id"]                 = $row["id"];
    $user["name"]               = ucfirst($row["user_name"]);
    $user["date"]               = $row["date_of_treatment"];
    $user["age"]                = $row["age_of_user"];

    // push single user into final response array
    array_push($response['users'], $user);

    $count = $count+1;
    $sum_of_age = $sum_of_age+$row["age_of_user"];

}

$response['count']=$count;
$response['avg']=$sum_of_age/$count;
echo json_encode($response);

答案 1 :(得分:2)

你可以试试这个:

$users = array();
$sum_of_age = 0;
$count = 0;
$users = array();
while ($row = mysql_fetch_array($result)) 
{
    $user["id"] = $row["id"];
    $user["name"] = ucfirst($row["user_name"]);
    $user["date"] = $row["date_of_treatment"];
    $user["age"] = $row["age_of_user"];

    // push single user into final response array
    $users[] = $user;

    $count++;
    $sum_of_age += (int) $row["age_of_user"];
}

$response = array(
    'users' => $users,
    'averageAge' => $sum_of_age/$count,
    'count' => $count

);

echo json_encode($response);

这应该导致以下json响应:

{
    "users":[
        { "id" : "1", "name" : "John Doe" , "date" : "2014-03-22 15:20" , "age" : 42 },
        {...},
        ...
    ],
    "averageAge": 42,
    "count": 1337
}

答案 2 :(得分:0)

<?php

$response = array();

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

        $user["id"]                 = $row["id"];
        $user["name"]               = ucfirst($row["user_name"]);
        $user["date"]               = $row["date_of_treatment"];
        $user["age"]                = $row["age_of_user"];

        // push single user into final response array
        array_push($response, $user);

        $count = $count+1;
        $sum_of_age = $sum_of_age+$row["age_of_user"];

    }

$response["average_age"]  = $sum_of_age / $count;
$response["count"] = $count;

echo json_encode($response);

}

这是答案,感谢@Amal Murali(评论链接),你提供的链接正在工作..: - )