来自PHP数组的嵌套JSON [英] Nested JSON From PHP Array
问题描述
我已将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屋!