简体   繁体   中英

PHP - Create a nested array from MySQL data

I have some data stored in a table like so:

id  parent_id  name
1   0          Entry 1
2   0          Entry 2
3   0          Entry 3
4   1          Child of entry 1

I want to turn it into a nested array like so:

array(
    array(
        'id' => 1,
        'parent_id' => 0,
        'name' => 'Entry 1',
        'children' => array(...)
    ),
    ...
);

Ideally, it would need to support an infinite amount of nesting (children with children). Is my table set up to support this, if so, how would I generate this kind of array using the data in the table? If not, how should I set up my table?

There is a very good description of managing hierarchical data in mysql here: managing hierarchical data Here is another good example of building nested arrays: building nested arrays

You may think about using the Nested Set model. If you are going to query stuff mutch it is better than the adjacency model you are using right now.

Hope that helps.

You won't have hierarchical data from "plain" SQL dataset, but you can write a function that will do that recursively. I can't provide code at the moment, but you probably get the idea.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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