在PHP中构建嵌套数组

在PHP中构建嵌套数组,php,mysql,json,Php,Mysql,Json,因此,我试图构建一个JSON对象,其中包含嵌套在主用户数组中的数组 我在PHP中构建数据模型时遇到了一些问题。有人能给点建议吗 期望输出: [{ id: 2, name: "John Wilson", profilePic: "fighter-1.jpg", activities: [{ id: 6431, time: (57).minu

因此,我试图构建一个JSON对象,其中包含嵌套在主用户数组中的数组

我在PHP中构建数据模型时遇到了一些问题。有人能给点建议吗

期望输出:

[{
            id: 2,
            name: "John Wilson",
            profilePic: "fighter-1.jpg",
            activities: [{
                id: 6431,
                time: (57).minutes().ago(),
                points: 20
            }, {
                id: 6431,
                time: new Date(),
                points: 20
            }]
        }, {
            id: 3,
            name: "Christoper Robin",
            profilePic: "fighter-3.jpg",
            activities: [{
                id: 6431,
                time: (1).days().ago,
                points: 20
            }, {
                id: 6431,
                time: (2).days().ago,
                points: 20
            }, {
                id: 6431,
                time: new Date(),
                points: 20
            }]
        }, {
            id: 1,
            name: "Jerry Seinfeld",
            profilePic: "placeholder.jpg",
            activities: [{
                id: 6431,
                time: new Date(),
                points: 20
            }, {
                id: 6431,
                time: new Date(),
                points: 20
            }, {
                id: 6432,
                time: new Date(),
                points: 100
            }]
        }]
PHP和MySQL:

$getCompUsers = mysql_query("SELECT c.userid, u.name, u.profilePic, a.activity_typeid, a.userid, a.time, a.activity_weight, a.activityname
        FROM competitionmembers c 
        INNER JOIN users1 u ON  u.id = c.userid 
        INNER JOIN activity_entries a ON a.userid = u.id
        WHERE c.competitionid = '$competitionId'") or die("Couldn't select competitions users");

$compUsersArr = array();
while ($row = mysql_fetch_array($getCompUsers,MYSQL_ASSOC)){

$compUsersArr = array(
            'id' => $row["userid"],
            'name'=> $row["name"],
            'profilePic' => $row["profilePic"], 
                $activities = array( //THIS SEEMS TO BE THE PROBLEM
                    'id' => $row["activity_typeid"],
                    'name' => $row["activityname"],
                    'points' => $row["activity_weight"]
                    )
            );
    }

制作数组的方法是错误的,要嵌套,不必像以前那样在数组中使用变量

$compUsersArr = array(
        'id' => $row["userid"],
        'name'=> $row["name"],
        'profilePic' => $row["profilePic"], 
        'activities' => array(
            'id' => $row["activity_typeid"],
            'name' => $row["activityname"],
            'points' => $row["activity_weight"]
        )
);

实际上,你的代码几乎是正确的;将其拆分会让您了解为什么它没有:

$activities = array(
    'id' => $row["activity_typeid"],
    'name' => $row["activityname"],
    'points' => $row["activity_weight"]
);

$compUsersArr = array(
    'id' => $row["userid"],
    'name'=> $row["name"],
    'profilePic' => $row["profilePic"], 
    $activities,
);
这将创建一个数组,如:

[
    'id' => 123, 
    'name' => 'foo', 
    'profilePic' => 'bar', 
    0 => ['id' => 456, 'name' => 'baz', 'points' => 'quz']
]
您可能会希望这样:

$compUsersArr = array(
    'id' => $row["userid"],
    'name'=> $row["name"],
    'profilePic' => $row["profilePic"], 
    'activities' => $activities,
);

给你一些提示:除了在构建第二个数组时的小的typo=should=>之外,这很好。谢谢D