Forum Moderators: coopster

Message Too Old, No Replies

Simplifying these arrays

         

csdude55

11:36 pm on Jun 4, 2017 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



I have a series of arrays that are set up like this:

$navList = array(
'Category 1',
'Category 2',
'Category 3'
);

$navLinks = array(
'/category1/',
'/category2/',
'/category3/'
);

$subNavList = array(
array('Cat 1 Subcat 1', 'Cat 1 Subcat 2', 'Cat 1 Subcat 3'),
array('Cat 2 Subcat 1', 'Cat 2 Subcat 2', 'Cat 2 Subcat 3'),
array('Cat 3 Subcat 1', 'Cat 3 Subcat 2', 'Cat 3 Subcat 3')
);

$subNavLinks = array(
array('/category1/subcat1/', '/category1/subcat2/', '/category1/subcat3/'),
array('/category2/subcat1/', '/category2/subcat2/', '/category2/subcat3/'),
array('/category3/subcat1/', '/category3/subcat2/', '/category3/subcat3/')
);

In this example, the menu would show the list of $navList and link the category to the corresponding $navLinks, then beneath each category show the corresponding $subNavList that links to the corresponding $subNavLinks.

And, of course, in real life they would have real names instead of "category1" and all that. This is just for the example.

Is there a better / faster-to-process / easier-to-read way to associate the 4 arrays in the same way?

lucy24

3:01 am on Jun 5, 2017 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



I realize it's hard to be sure when you have to "exemplify" everything, but isn't it all awfully redundant? Seems like you should be able to make more of a nested structure along the lines of
array("category1/", array("subcat1/","subcat2/","subcat3/"))

et cetera.

Peter_S

6:22 am on Jun 5, 2017 (gmt 0)

5+ Year Member Top Contributors Of The Month



All depends what you are doing exactly with these arrays. If this is only to display a menu, or if you are doing look-up / search through them, etc.

Here are some examples:

$nav = array(

array (
'title' => 'Category 1' ,
'link' => '/category1/' ,
'sub' => array (
array (
'title' => 'Cat 1 Subcat 1' ,
'link' => '/category1/subcat1/'
) ,
array (
'title' => 'Cat 1 Subcat 2' ,
'link' => '/category1/subcat2/'
) ,
array (
'title' => 'Cat 1 Subcat 3' ,
'link' => '/category1/subcat3/'
) ,
) ,
) ,

array (
'title' => 'Category 2' ,
'link' => '/category2/' ,
'sub' => array (
array (
'title' => 'Cat 2 Subcat 1' ,
'link' => '/category2/subcat1/'
) ,
array (
'title' => 'Cat 2 Subcat 2' ,
'link' => '/category2/subcat2/'
) ,
array (
'title' => 'Cat 2 Subcat 3' ,
'link' => '/category2/subcat3/'
) ,
) ,
),

array (
'title' => 'Category 3' ,
'link' => '/category3/' ,
'sub' => array (
array (
'title' => 'Cat 3 Subcat 1' ,
'link' => '/category3/subcat1/'
) ,
array (
'title' => 'Cat 3 Subcat 2' ,
'link' => '/category3/subcat2/'
) ,
array (
'title' => 'Cat 3 Subcat 3' ,
'link' => '/category3/subcat3/'
) ,
) ,
)
);


$nav = array(

'Category 1' => array (
'link' => '/category1/' ,
'sub' => array (
'Cat 1 Subcat 1' => array ( '/category1/subcat1/' ) ,
'Cat 1 Subcat 2' => array ( '/category1/subcat2/' ) ,
'Cat 1 Subcat 3' => array ( '/category1/subcat3/' ) ,
) ,
) ,

'Category 2' => array (
'link' => '/category2/' ,
'sub' => array (
'Cat 2 Subcat 1' => array ( '/category2/subcat1/' ) ,
'Cat 2 Subcat 2' => array ( '/category2/subcat2/' ) ,
'Cat 2 Subcat 3' => array ( '/category2/subcat3/' ) ,
) ,
) ,

'Category 3' => array (
'link' => '/category3/' ,
'sub' => array (
'Cat 3 Subcat 1' => array ( '/category3/subcat1/' ) ,
'Cat 3 Subcat 2' => array ( '/category3/subcat2/' ) ,
'Cat 3 Subcat 3' => array ( '/category3/subcat3/' ) ,
) ,
)
) ;


$nav = array(

'Category 1' => array (
'/category1/' ,
array (
'Cat 1 Subcat 1' => array ( '/category1/subcat1/' ) ,
'Cat 1 Subcat 2' => array ( '/category1/subcat2/' ) ,
'Cat 1 Subcat 3' => array ( '/category1/subcat3/' ) ,
) ,
) ,

'Category 2' => array (
'/category2/' ,
array (
'Cat 2 Subcat 1' => array ( '/category2/subcat1/' ) ,
'Cat 2 Subcat 2' => array ( '/category2/subcat2/' ) ,
'Cat 2 Subcat 3' => array ( '/category2/subcat3/' ) ,
) ,
) ,

'Category 3' => array (
'/category3/' ,
array (
'Cat 3 Subcat 1' => array ( '/category3/subcat1/' ) ,
'Cat 3 Subcat 2' => array ( '/category3/subcat2/' ) ,
'Cat 3 Subcat 3' => array ( '/category3/subcat3/' ) ,
) ,
)
) ;