php json编码中的组合数组
我开发的php代码如下:php json编码中的组合数组,php,json,Php,Json,我开发的php代码如下: while($row = mysql_fetch_array ($result)) { $catalogue = array( 'catalogue_id' => $row[0], 'catalogue_name' => $row[1], 'catalogue_cover' => $row[2], '
while($row = mysql_fetch_array ($result))
{
$catalogue = array(
'catalogue_id' => $row[0],
'catalogue_name' => $row[1],
'catalogue_cover' => $row[2],
'category' => array(
'id' => $row[3],
'name' => $row[4],
'cover' => $row[5],
'item' => array (
'id' => $row[6],
'name' => $row[7],
'cover' => $row[8],
'description' => $row[9],
'price' =>$row[10]
)
),
);
array_push($json, $catalogue);
}
$jsonresult = array2json($json);
echo $jsonresult;
[
{
"catalogue_id": "59",
"catalogue_name": "IT Catalog",
"catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
"category": {
"id": "60",
"name": "Computer Accessory",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
"item": {
"id": "61",
"name": "CD",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
"description": "",
"price": "0.00"
},
"category-2": {
"id": "61",
"name": "IT Category",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
"item": {
"id": "63",
"name": "IT Item",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
"description": "",
"price": "0.00"
}
}
}
}
]
结果是:
[
{
"catalogue_id": "59",
"catalogue_name": "IT Catalog",
"catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
"category": {
"id": "60",
"name": "Computer Accessory",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
"item": {
"id": "61",
"name": "CD",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
"description": "",
"price": "0.00"
}
}
},
{
"catalogue_id": "59",
"catalogue_name": "IT Catalog",
"catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
"category": {
"id": "61",
"name": "IT Category",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
"item": {
"id": "63",
"name": "IT Item",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
"description": "",
"price": "0.00"
}
}
}
]
但我想将相同的目录合并如下:
while($row = mysql_fetch_array ($result))
{
$catalogue = array(
'catalogue_id' => $row[0],
'catalogue_name' => $row[1],
'catalogue_cover' => $row[2],
'category' => array(
'id' => $row[3],
'name' => $row[4],
'cover' => $row[5],
'item' => array (
'id' => $row[6],
'name' => $row[7],
'cover' => $row[8],
'description' => $row[9],
'price' =>$row[10]
)
),
);
array_push($json, $catalogue);
}
$jsonresult = array2json($json);
echo $jsonresult;
[
{
"catalogue_id": "59",
"catalogue_name": "IT Catalog",
"catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
"category": {
"id": "60",
"name": "Computer Accessory",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
"item": {
"id": "61",
"name": "CD",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
"description": "",
"price": "0.00"
},
"category-2": {
"id": "61",
"name": "IT Category",
"cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
"item": {
"id": "63",
"name": "IT Item",
"cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
"description": "",
"price": "0.00"
}
}
}
}
]
我该怎么做?您可以通过
catalog\u id
为$catalog
编制索引,并随附类别
while ($row = mysql_fetch_array($result)) {
$catalogue_id = $row[0];
if (!isset($json[$catalogue_id])) {
$json[$catalogue_id] = array(
'catalogue_id' => $catalogue_id,
'catalogue_name' => $row[1],
'catalogue_cover' => $row[2]
'categories' => array();
);
}
$json[$catalogue_id]['categories'][] = array(
'id' => $row[3],
'name' => $row[4],
'cover' => $row[5],
'item' => array (
'id' => $row[6],
'name' => $row[7],
'cover' => $row[8],
'description' => $row[9],
'price' =>$row[10]
);
}
$jsonresult = array2json(array_values($json));
echo $jsonresult;
除了array2json
之外,您还可以使用json\u encode
echo json_encode(array_values($json));
我不认为这是json的想法。。。您将拥有2倍的密钥类别或更高的多次,应该以您想要的方式违反规范您是说您只想覆盖
$json
数组的category元素吗?这是相当令人困惑的。我将我的问题分类编辑为一个分类,一个分类2。我可以创建它吗?你必须以这种格式创建数组。你自己做了什么来找到答案?社区希望帮助你,但我们不喜欢做你的家庭作业。谢谢你的帮助。目录是合并的,但类别是空数组。我知道了。我添加$json[$catalog\u id]=$catalog;数组推送后($catalog['categories',$categority);这个。@thinzar对不起,我错过了。我把代码简化了一点。请参阅更新的答案。