PHP编码的嵌套JSON数组


PHP - encoding nested JSON array

我正在尝试创建一个带有嵌套节点的JSON响应。第一个节点的数据来自一个名为"category"的表,第二个节点的信息来自另一个名"tracks"的表。"tracks"表中的每个"tracks通过"<strong]category_id>"与"category=strong>"表连接。到目前为止,我已经创建了这个响应,

{
    "category": [
        {
            "category_id": "1",
            "category_name": "Editor's Choice ",
            "cover_url": "http://www.example.com"
        },
        {
            "category_id": "2",
            "category_name": "New Releases",
            "cover_url": "http://www.example.com"
        }
    ],
    "success": 1
}

现在,我想要另一个子节点"track_list",该子节点的数据将来自"类别"数组内的"1tracks"表。最终的JSON可能是这样的,

{
    "category": [
        {
            "category_id": "1",
            "category_name": "Editor's Choice ",
            "cover_url": "http://www.example.com",
            "track_list": [
                {
                    "track_id": "",
                    "track_name": ""
                },
                {
                    "track_id": "",
                    "track_name": ""
                }
            ]
        },
        {
            "category_id": "2",
            "category_name": "New Releases",
            "cover_url": "http://www.example.com",
            "track_list": [
                {
                    "track_id": "",
                    "track_name": ""
                },
                {
                    "track_id": "",
                    "track_name": ""
                }
            ]
        }
    ],
    "success": 1
}

这是我已经试过的代码,

// array for JSON response
$response = array();
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// get all category data name from table
$result = mysql_query("SELECT *FROM category") or die(mysql_error());
// check for empty result
if (mysql_num_rows($result) > 0) {
    // looping through all results
    // category node
    $response["category"] = array();
    while ($row = mysql_fetch_array($result)) {
        // temp category array
        $category = array();
        $category["category_id"] = $row["category_id"];
        $category["category_name"] = $row["category_name"];
        $category["cover_url"] = $row["cover_url"];
        // push single category into final response array
        array_push($response["category"], $category);
    }
    // success
    $response["success"] = 1;
    // echoing JSON response
    echo json_encode($response, JSON_PRETTY_PRINT);
} else {
    // no category found
    $response["success"] = 0;
    $response["message"] = "No result found";
    // echo no users JSON
    echo json_encode($response, JSON_PRETTY_PRINT);
}

我不知道嵌套的JSON,因为我对PHP完全陌生。任何形式的帮助都将不胜感激。

像这样更改while循环

while ($row = mysql_fetch_array($result)) {
    // temp category array
    $category = array();
    $category["category_id"] = $row["category_id"];
    $category["category_name"] = $row["category_name"];
    $category["cover_url"] = $row["cover_url"];
    $category_id = $row["category_id"]; 
    $track_list = array(); // for track list information
    //Get the tracks associated with category
    $result_tracks = mysql_query("SELECT *FROM tracks WHERE category_id = $category_id") or die(mysql_error());
    while ($row_track = mysql_fetch_array($result_tracks)) {
            $track_list_temp = array();
            $track_list_temp["track_id"] = $row_track["track_id"];
            $track_list_temp["track_name"] = $row_track["track_name"];
            array_push($track_list, $track_list_temp);             
    }
     $category["track_list"] = $track_list; // track list in category array
    // push single category into final response array
    array_push($response["category"], $category);
 }

使用

$tracklist_array["track_id"] = "value";
 $tracklist_array["track_name"] = "value";
 array_push($response["banner"]["tracklist"], $tracklist_array);