繁体   English   中英

关于将JSON树结构制作为PHP

[英]About making JSON tree structure as PHP

最近,我将JSON类别结构制作为PHP。 但是,我不是php程序员。 所以,我做得不好。

下面是我的PHP源代码。

<?php
header('Content-Type: application/json; charset=utf-8');

$data = array(
    array('categoryno' => 1, 'parentno' => null, 'name' => urlencode('book')),
    array('categoryno' => 2, 'parentno' => 1, 'name' => urlencode('science')),
    array('categoryno' => 3, 'parentno' => 1, 'name' => urlencode('medical')),
    array('categoryno' => 4, 'parentno' => 2, 'name' => urlencode('physics')),
    array('categoryno' => 5, 'parentno' => 3, 'name' => urlencode('medicine')),
    array('categoryno' => 6, 'parentno' => null, 'name' => urlencode('game')),
    array('categoryno' => 7, 'parentno' => 6, 'name' => urlencode('fantasy')),
);


$itemArray = array();

foreach($data as $key => &$item)
{
    $itemArray[$item['categoryno']] = &$item;

    $itemArray[$item['categoryno']]['children'] = array();

    $itemArray[$item['categoryno']] = Array('item' => $itemArray[$item['categoryno']]);


    if($item['item']['parentno'] && isset($itemArray[$item['item']['parentno']]))
    {
        $itemArray[$item['item']['parentno']]['children'][] = &$item;
    }

    if($item['item']['parentno'] && isset($itemArray[$item['item']['parentno']]))
    {
        unset($data[$key]);
    }         
}

$json = json_encode(Array('category' => $data));
echo urldecode($json);
?>

这是当前结果。

{
    "category":{
        "0":{
            "item":{
                "categoryno":1,
                "parentno":null,
                "name":"book",
                "children":[
                ]
            },
            "children":[
                {
                    "item":{
                        "categoryno":2,
                        "parentno":1,
                        "name":"science",
                        "children":[
                        ]
                    },
                    "children":[
                        {
                            "item":{
                                "categoryno":4,
                                "parentno":2,
                                "name":"physics",
                                "children":[
                                ]
                            }
                        }
                    ]
                },
                {
                    "item":{
                        "categoryno":3,
                        "parentno":1,
                        "name":"medical",
                        "children":[
                        ]
                    },
                    "children":[
                        {
                            "item":{
                                "categoryno":5,
                                "parentno":3,
                                "name":"medicine",
                                "children":[
                                ]
                            }
                        }
                    ]
                }
            ]
        },
        "5":{
            "item":{
                "categoryno":6,
                "parentno":null,
                "name":"game",
                "children":[
                ]
            },
            "children":[
                {
                    "item":{
                        "categoryno":7,
                        "parentno":6,
                        "name":"fantasy",
                        "children":[
                        ]
                    }
                }
            ]
        }
}

但是,我想使结果如下所示。

{
    "category":{
        "item":{
            "categoryno":1,
            "parentno":null,
            "name":"book",
            "children":[
                "item":{
                    "categoryno":2,
                    "parentno":1,
                    "name":"science",
                    "children":[
                        "item":{
                            "categoryno":4,
                            "parentno":2,
                            "name":"physics",
                            "children":[
                            ]
                        }
                    ]
                },
                "item":{
                    "categoryno":3,
                    "parentno":1,
                    "name":"medical",
                    "children":[
                        "item":{
                            "categoryno":5,
                            "parentno":3,
                            "name":"medicine",
                            "children":[
                            ]
                        }
                    ]
                },
            ]
        },
        "item":{
            "categoryno":6,
            "parentno":null,
            "name":"game",
            "children":[
                "item":{
                    "categoryno":7,
                    "parentno":6,
                    "name":"fantasy",
                    "children":[
                    ]
                }
            ]
        },
    }
}

如何修复我的代码? 请你帮助我好吗?

改变那个

$itemArray[$item['categoryno']]['children'] = array();

$itemArray[$item['categoryno']] = Array('item' => $itemArray[$item['categoryno']]);

像这样

$itemArray[$item['categoryno']]['children'] = Array('item' => $itemArray[$item['categoryno']]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM