One method might be:
$nav_array = array(
'Home'=>array('home.php', null),
'Design'=>array('design.php', array(
'Web Design' => array('web_design.php', null),
'Graphic Design' => array('product_design.php', null),
'Product Design' => array('product_design.php', null),
)),
...
);
Then $nav_array['Home'] will be an array with two elements. $nav_array['Home'][0] is the name of the page 'home.php', and $nav_array['Home'][1] is null, because there aren't any submenus.
$nav_array['Design'] is also an array with two elements. $nav_array['Design'][0] contains 'design.php', while $nav_array['Design'][1] is an array containing the Design submenu, in exactly the same format as $nav_array itself.
So if you want the submenu for the Design section you have
$submenu = $nav_array['Design'][1];
Once you've done that you have, for example $submenu['Web Design'][0] == 'web_design.php'.
Then again, if you want the submenu for the Home section it's
$submenu = $nav_array['Home'][1];
$submenu will be null, which tells you that there isn't a submenu after all.
Needless to say, since the submenu arrays have exactly the same format as the main nav array, they can each have subsubmenus, should that prove useful.
This is effectively what the usual database representation is designed to simulate (except that relational databases aren't that good with hierarchically-structured data).
If you don't know what the sections in a particular menu are named, you can get a list of them by using array_keys($menu).
So, for example, this just returns a (suitably-nested) list of sections and subsections from such a menu, with links.
function nav_as_list($navmenu)
{
$list = "<ul>";
foreach($navmenu as $name=>$content)
{
list($link, $submenu) = $content;
$list .= "<li><a href=\"$link\">$name</a>";
if(!is_null($submenu))
$list .= nav_as_list($submenu);
$list .= "</li>";
}
$list .= "</ul>";
return $list;
}
I say "just", but with appropriate CSS rules (and assuming the code works, seeing as I haven't tested it yet), the output of that function could become a fully-functional whizzbang dropdown menu system.
The same basic structure (have the function loop through the elements, and call itself if it finds a submenu) could be used for pretty much any other traversal task. And it's still possible to write something like "$nav_array['Foo'][1]['Bar'][1]" if you want to get straight at Foo's-->Bar's subsubmenu if, say, you're already in the Bar subsection and just want its subsubmenu.