我一直在尝试使用php创建一个使用mysql数据的多层嵌套json。
我需要这个json,以便稍后使用jquery创建html菜单。
但我目前正在努力创建多级嵌套json。我在stackoverflow网站和google上发现了100个类似的问题,但它们都略有不同。
基本上,我的mysql数据库是这样的:
id post_title post_parent
1 test 1 0
2 test 2 1
3 test 3 1
4 test 4 0
5 test 5 3
6 test 6 5
7 test 7 5
列 post_parent
是将它们链接在一起的列。
我尝试过使用下面的php代码,但是json输出是错误的。
我当前的php代码:
$return_arr= array();
$sql = mysqli_query($db_conx,"SELECT * FROM wp_posts WHERE post_status = 'publish' AND post_title !='Hello world!' AND post_title !='' ORDER BY post_title");
while ($row = mysqli_fetch_array($sql ,MYSQLI_ASSOC))
{
if( !isset( $return_arr[ $row['post_parent'] ] ) ) {
$return_arr[ $row['post_parent'] ] = array();
}
if( !isset( $return_arr[ $row['post_title'] ][ $row['post_title'] ] ) ) {
$return_arr[ $row['post_parent'] ][ $row['post_title'] ] = array();
}
}
echo json_encode($return_arr);
上面代码的输出是这样的,这是错误的:
{
"0": {
"test 1": [],
"test 4": []
},
"1": {
"test 2": [],
"test 3": []
},
"3": {
"test 5": []
},
"5": {
"test 6": [],
"test 7": []
}
}
这没有显示正确的多层嵌套json数据。
有人能就这个问题提出建议吗?
任何帮助都将不胜感激。
编辑:
我需要一个多层嵌套的json,如以下结构:
[
{
"post_title":"Test 1",
"children":[
{
"post_title":"test 3",
"children":[
{
"post_title":"test 5",
"children":[
{
"post_title":"test 6"
},
{
"post_title":"test 7"
}
]
}
]
},
{
"post_title":"test 2"
}
]
}
]
然后我可以创建一个多级菜单,如下所示:
https://www.jqueryscript.net/demo/menu-list-generator-jquery-rendermenu/index2.html
1条答案
按热度按时间afdcj2ne1#
首先创建一个包含所有子级的数组,并使用post\父级作为索引。在下面的示例中,我使用\元素调用了这个数组$array\ u。之后,您需要一个单独的函数,以便可以使用这个递归函数。