I have a multi-array that is about 5/6 levels deep, I would like to
alter the way that my output is but am losing faith. Currently I use
this loop
[code=php]
function tree_menu($array, $indent=0) {
$prefix = “”;
for ($i=0; $i<$indent; $i++) {
$prefix .= ” “;
}
while (list ($key, $value) = each($array)) {
if (is_array($value)) {
echo $prefix . “<a class=”parent” href=”#”>” . $key . “</a>nr”;
tree_menu($value, $indent + 1);
} else {
echo $prefix . “<li><a href='” . $value . “‘>” . $key . “</a></li>nrt”;
}
}
}
to output something that looks a lot like this.
[code=html]
<a class=”parent” href=”#”>Products</a>
<a class=”parent” href=”#”>Lighting</a>
<a class=”parent” href=”#”>PR Lighting</a>
<li><a href=’prl-ar.php’>Architectural</a></li>
<li><a href=’prl-cp.php’>Centerpieces</a></li>
<li><a href=’prl-dj.php’>DJ Pro Series</a></li>
<a class=”parent” href=”#”>Theatrical</a>
<li><a href=’prl-fs.php’>Followspots</a></li>
<a class=”parent” href=”#”>Moving Yoke</a>
<li><a href=’prl-xl.php’>XL Series</a></li>
<li><a href=’prl-xs.php’>XS Series</a></li>
<li><a href=’prl-pt.php’>Pilot Series</a></li>
<li><a href=’prl-so.php’>Solo Series</a></li>
<a class=”parent” href=”#”>Omni Lighting</a>
<li><a href=’lit-ar.php’>Architectural</a></li>
<li><a href=’lit-cp.php’>Centerpieces</a></li>
<a class=”parent” href=”#”>Effect Lighting</a>
<li><a href=’lit-ad.php’>Advancer Series</a></li>
<li><a href=’lit-as.php’>American Series</a></li>
<li><a href=’lit-ss.php’>Star Series</a></li>
<li><a href=’lit-fo.php’>Fiber Optics</a></li>
<li><a href=’lit-il.php’>Intelligent</a></li>
<li><a href=’lit-sl.php’>Searchlights</a></li>
<li><a href=’lit-se.php’>Special Effects</a></li>
<li><a href=’lit-uv.php’>UV Fictures</a></li>
<li><a href=’lit-st.php’>Stands</a></li>
<a class=”parent” href=”#”>LED</a>
<li><a href=’led-fx.php’>Effects</a></li>
<li><a href=’led-pc.php’>Par Cans</a></li>
<li><a href=’led-my.php’>Moving Yoke</a></li>
<li><a href=’led-sp.php’>Strips</a></li>
<li><a href=’led-ps.php’>Panels</a></li>
<li><a href=’led-vw.php’>Video Walls</a></li>
… conct …
I am using this as a nav menu function though and need to
alter my loop to support levels and etc and its getting a
bit past my level, would someone mind helping me tailor the
output to something more like this?
[code=html]
<ul class=”level1″><li><a class=”parent” href=”#”>Products</a><ul class=”level2″><li><a class=”parent” href=”#”>Lighting</a><ul class=”level3″><li><a class=”parent” href=”#”>PR Lighting</a><ul class=”level4″><li><a class=”parent” href=”#”>Theatrical</a><ul class=”level5″><li><a href=”<?=$light;?>prl-fs.php”>Followspots</a></li></ul></li> <li><a href=”http://omnisistem.com/layers/lighting/prl-ar.php”>Architectural</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-cp.php”>Centerpieces</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-dp.php”>DJ Pro Series</a></li>
<li>
<a class=”parent” href=”#”>Moving Yoke</a>
<ul class=”parent”>
<li><a href=”http://omnisistem.com/layers/lighting/prl-xl.php”>XL Series</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-xs.php”>XS Series</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-pt.php”>Pilot Series</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-so.php”>Solo Series</a></li>
</ul>
</li>
<li><a href=”http://omnisistem.com/layers/lighting/prl-sl.php”>Search Lights</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Omni Lighting</a>
<ul class=”level4″>
<li>
<a class=”parent” href=”#”>Theatrical</a>
<ul class=”level5″>
<li><a href=”http://omnisistem.com/layers/lighting/lit-fs.php”>Followspots</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-pc.php”>Stage Lights</a></li>
</ul>
</li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-ar.php”>Architectural</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-cp.php”>Centerpieces</a></li>
<li>
<a class=”parent” href=”#”>Effect Lighting</a>
<ul class=”level5″>
<li><a href=”http://omnisistem.com/layers/lighting/lit-ad.php”>Advancer Series</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-as.php”>American Series</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-ss.php”>Star Series</a></li>
</ul>
</li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-fo.php”>Fiber Optics</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-il.php”>Intelligent</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-sl.php”>Searchlights</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-se.php”>Special Effects</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-uv.php”>UV Fixtures</a></li>
<li><a href=”http://omnisistem.com/layers/lighting/lit-st.php”>Stands</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>L.E.D.</a>
<ul class=”level3″>
<li><a href=”http://omnisistem.com/layers/led/led-fx.php”>Effects</a></li>
<!– <li><a href=”http://omnisistem.com/layers//layers/led/led-ll.php”> Lamps</a></li> –>
<li><a href=”http://omnisistem.com/layers/led/led-pc.php”>Par Cans</a></li>
<li><a href=”http://omnisistem.com/layers/led/led-my.php”>Moving Yoke</a></li>
<li><a href=”http://omnisistem.com/layers/led/led-sp.php”>Strips</a></li>
<li><a href=”http://omnisistem.com/layers/led/led-ps.php”>Panels</a></li>
<li><a href=”http://omnisistem.com/layers/led/led-vw.php”>Video Walls</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Lasers</a>
<ul class=”level3″>
<li><a href=”http://omnisistem.com/layers/lasers/lsr-pr.php”>Professional</a></li>
<li><a href=”http://omnisistem.com/layers/lasers/lsr-sp.php”>Semi-Professional</a></li>
<li><a href=”http://omnisistem.com/layers/lasers/lsr-dc.php”>DJ & Club</a></li>
<li><a href=”http://omnisistem.com/layers/lasers/lsr-la.php”>Accessories</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Omni Cables</a>
<ul class=”level3″>
<li><a href=”http://omnisistem.com/layers/cable/cbl-al.php”>All Cables</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Omni Cases</a>
<ul class=”level3″>
<li><a href=”http://omnisistem.com/layers/case/css-hd.php”>Hard</a></li>
<li><a href=”http://omnisistem.com/layers/case/css-sf.php”>Soft</a></li>
<li><a href=”http://omnisistem.com/layers/case/css-rd.php”>Road</a></li>
<li><a href=”http://omnisistem.com/layers/case/css-fl.php”>Flight</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Omni Sound</a>
<ul class=”level3″>
<li><a href=”http://omnisistem.com/layers/sound/snd-ra.php”>PA Systems</a></li>
<li><a href=”http://omnisistem.com/layers/sound/snd-es.php”>SS/SB Series</a></li>
<li><a href=”http://omnisistem.com/layers/sound/snd-ej.php”>EJ Series</a></li>
<li><a href=”http://omnisistem.com/layers/sound/snd-us.php”>U Series</a></li>
<li><a href=”http://omnisistem.com/layers/sound/snd-xi.php”>Xi Series</a></li>
<li><a href=”http://omnisistem.com/layers/sound/snd-el.php”>Electronics</a></li>
</ul>
</li>
<li>
<a class=”parent” href=”#”>Truss Sistem</a>
You can see that each UL class has a level based on where it is in the array
and though it is in there, I do not use the prefix in my code, so it can
be used for incrementations if need be. The biggest part is correctly
wrapping each “level” in its own <ul><li> </li></ul> tags to segregate.
I might change my array to also hold the value of the current paths,
aka [url]http://omnisistem.com/layer/lighting/
appropriate place to include it, suggestions appreciated.
-Jd