来自PHP数组的嵌套JSON [英] Nested JSON From PHP Array

查看:348
本文介绍了来自PHP数组的嵌套JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将iTunes歌曲数据加载到MySQL数据库中,并且试图使用PHP获取专辑信息的JSON提要.这段代码.

I've loaded my iTunes song data into a MySQL database and I'm trying to use PHP to get a JSON feed of album information. This code..

        <?php

    /* Connect  to database */
    require ('include/connect.php');

    /* Build the query */
            $query = "SELECT a.album,a.name,a.artist,a.year AS track_year, b.year AS album_year FROM staging a, (SELECT album, MAX(year) AS year FROM staging GROUP BY album) b WHERE a.album = b.album";

    /* Loop through the results and build a JSON array for the data table */
    $result = $mysqli->query($query);
    $info = array();
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

                if (!isset($info[$row['album']])) {
                    $info[$row['album']] = array(
                        'record' => $row['album']
                        , 'artist' => $row['artist']
                        , 'year' => $row['album_year']
                        , 'tracks' => array()
              );
           }

            $info[$row['album']]['tracks'][] = $row['name'];
    }       

    $data = json_encode($info);
            ?>

产生此结果(被截断为两张专辑)...

produces this result (truncated to two albums)...

{
"Abbey Road": {
    "album": "Abbey Road",
    "artist": "The Beatles",
    "year": "1969",
    "tracks": [
        "Come Together",
        "Something",
        "Maxwell's Silver Hammer",
        "Oh! Darling",
        "Octopus's Garden",
        "I Want You (She's So Heavy)",
        "Here Comes The Sun",
        "Because",
        "You Never Give Me Your Money",
        "Sun King",
        "Mean Mr. Mustard",
        "Polythene Pam",
        "She Came In Through The Bathroom Window",
        "Golden Slumbers",
        "Carry That Weight",
        "The End",
        "Her Majesty"
    ]
},
"Accelerate": {
    "album": "Accelerate",
    "artist": "R.E.M.",
    "year": "2008",
    "tracks": [
        "Living Well Is the Best Revenge",
        "Man-Sized Wreath",
        "Supernatural Superserious",
        "Hollow Man",
        "Houston",
        "Accelerate",
        "Until the Day Is Done",
        "Mr. Richards",
        "Sing for the Submarine",
        "Horse to Water",
        "I'm Gonna DJ",
        "Supernatural Superserious (Live)"
    ]
}
}

我希望我的结果看起来像这样...

I'd like for my results to look like this...

[
      {
        "album": "Abbey Road",
        "artist": "The Beatles",
        "year": "1969",
        "tracks": [
            "Come Together",
            "Something",
            "Maxwell's Silver Hammer",
            "Oh! Darling",
            "Octopus's Garden",
            "I Want You (She's So Heavy)",
            "Here Comes The Sun",
            "Because",
            "You Never Give Me Your Money",
            "Sun King",
            "Mean Mr. Mustard",
            "Polythene Pam",
            "She Came In Through The Bathroom Window",
            "Golden Slumbers",
            "Carry That Weight",
            "The End",
            "Her Majesty"
        ]
    },
     {
        "album": "Accelerate",
        "artist": "R.E.M.",
        "year": "2008",
        "tracks": [
            "Living Well Is the Best Revenge",
            "Man-Sized Wreath",
            "Supernatural Superserious",
            "Hollow Man",
            "Houston",
            "Accelerate",
            "Until the Day Is Done",
            "Mr. Richards",
            "Sing for the Submarine",
            "Horse to Water",
            "I'm Gonna DJ",
            "Supernatural Superserious (Live)"
        ]
    }
    ]

很显然,我是第一次使用PHP编码JSON.我究竟做错了什么? 谢谢!

Obviously, I'm new to encoding JSON with PHP. What am I doing wrong? Thanks!

推荐答案

调用 array_values 在您的阵列上:

Call array_values on your array:

$data = json_encode(array_values($info));

这将删除您的命名索引并将其转换为数字索引,因此json_encode应该将您的数组视为索引(而不是关联)数组.

This removes your named indexes and converts them to numerical ones instead, so json_encode should treat your array as an indexed (and not an associative) array.

这篇关于来自PHP数组的嵌套JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆