Jump to content

Multi-Dimensional Array to HTML


JasonLewis

Recommended Posts

I'm absolutely stumped, it's 1am and my brain is pretty much fried from staring at this. I can't get my head around it, so hopefully someone here can.

 

I'm building a dynamic menu with nested items which can be nested an infinite amount of times. I've managed to pull the data from the database and organize it into a multi-dimensional array, however now I want to turn this array into a list with the items properly nested. I thought this would be the easy part, but apparently not.

 

Here is an example of the array:

Array
(
    [1] => Array
        (
            [PAGE_ID] => 1
            [PARENT_ID] => 0
            [AUTHOR_ID] => 1
            [page_name] => Example Page 01
            [page_permalink] => example-page-01
            [page_body] => This is an example page.
            [page_visibility] => 1
            [page_creation_date] => 2010-01-20 14:29:09
            [page_modification_date] => 0000-00-00 00:00:00
            [children] => Array
                (
                    [2] => Array
                        (
                            [PAGE_ID] => 2
                            [PARENT_ID] => 1
                            [AUTHOR_ID] => 1
                            [page_name] => Example Page 02
                            [page_permalink] => example-page-02
                            [page_body] => This is an example page.
                            [page_visibility] => 1
                            [page_creation_date] => 2010-01-20 14:29:38
                            [page_modification_date] => 0000-00-00 00:00:00
                            [children] => Array
                                (
                                    [3] => Array
                                        (
                                            [PAGE_ID] => 3
                                            [PARENT_ID] => 2
                                            [AUTHOR_ID] => 1
                                            [page_name] => Example Page 03
                                            [page_permalink] => example-page-03
                                            [page_body] => This is an example page.
                                            [page_visibility] => 1
                                            [page_creation_date] => 2010-01-20 14:31:47
                                            [page_modification_date] => 0000-00-00 00:00:00
                                        )

                                )

                        )

                    [4] => Array
                        (
                            [PAGE_ID] => 4
                            [PARENT_ID] => 1
                            [AUTHOR_ID] => 1
                            [page_name] => Example Page 04
                            [page_permalink] => example-page-04
                            [page_body] => An example page.
                            [page_visibility] => 1
                            [page_creation_date] => 2010-01-20 22:05:00
                            [page_modification_date] => 0000-00-00 00:00:00
                        )

                )

        )

)
1

 

Currently I have nothing, since I have been getting no where with it. If you can provide me with the theory behind it then that would be great.

 

At the moment I know I need some kind of recursive function, but I'm still stumped.

 

Regards,

Jason Lewis

Link to comment
Share on other sites

$menu = '';

function iterateMenu($array,&$output) {
$output .= '<ul style="list-style:none;">';
foreach ($array as $values) {
	$output .= '<li>'.$values['PAGE_NAME'].'</li>';
	if (isset($values['children']) && is_array($values['children'])) {
		$output .= '<li>';
		iterateMenu($values['children'],$output);
		$output .= '</li>';
	}
}
$output .= '</ul>';
}

iterateMenu($a,$menu);

echo $menu;

 

Should get you started :D

Link to comment
Share on other sites

Cheers, I've been starting to do it like this then I think, no that can't work. However, I've managed to get it working now with the theory that you've supplied.

 

However. I still can't get my head around it, maybe I'm just being arrogant. The way I see this theory is that it'll detect that a parent has children, then go into the array more and if the parent had another parent after it, then it would be skipped. But it's not how it works, and I can't figure out how it is working. Again, I think I'm looking to hard at it and not seeing the clear picture.

 

Thanks though, I've got it to display correctly, I just need to know HOW it displays it correctly now.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.