jeff1234567890
jeff1234567890

Reputation: 163

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?

Upvotes: 3

Views: 6658

Answers (2)

Adam Arold
Adam Arold

Reputation: 30528

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.

Upvotes: 6

Tomasz Kowalczyk
Tomasz Kowalczyk

Reputation: 10467

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.

Upvotes: 0

Related Questions