PHP nav menu – recursively get subcategories and use <li> and <ul> – Education Career Blog

Since I need to create a dynamically updated navigation menu, css requires me to structure the data this way:

<li>Projects (Menu Level 1)
    <ul>
        <li>Project 1 (Menu Level 2)</li>
        <li>Project 2 (Menu Level 2)</li>
        <li>Project 3 (Menu Level 2)</li>
    </ul>
</li>
<li>News (Menu Level 1)</li>
<li>Contact (Menu Level 1)</li>

I currently have the data in the following format in an array:

$fore = array(
  '0' => 'NULL',
  '1' => 'element 1 level', // the level in the tree for the following value (0 is for root, 1 is for leaf, 2 is for a leaf of the leaf and so on
  '2' => 'element 1 value', // the actual text that has to appear in the menu
  '3' => 'element 2 level',
  '4' => 'element 2 value'
.......
//and so on
);

I’ve been trying to do this all day now and I just cant figure out how it should happen. I tried >,< and = and ifs with the levels but there’s just too many combinations .. I’ll be really thankful if someone can help me out here ..

,

Make your array match the structure of the UI/LI elements so you can iterate through your array and process them in order. You may want to check if the tag changes so you know if you need to echo a closing tag or a new opening tag as you iterate. Right now your structure is so far off you need to place a lot of logic in to decipher between your array and desired output.

This also points back to the source of your array data. If it is coming from a db table then you need to evaluate it’s structure also. Look at where it starts and where it ends, then the middle ground should be simple.

Leave a Comment