David Posted May 15, 2017 Share Posted May 15, 2017 Modified the recursive function on page 19 to return divs instead of an ordered list. Function: function make_list($parent, $sub=FALSE) { // set attribute if (!$sub) { $attribute = 'id="menu"'; } else { $attribute = 'class="submenu"'; } // set tasks access global $tasks; foreach ($parent as $task_id => $todo) { // new loop? if (!$sub) { echo '<div id="main">'; } // build div echo '<div ' . $attribute . '>' . $todo . '</div>'; // check for next array if (isset($tasks[$task_id])) { // call function again make_list($tasks[$task_id], TRUE); } else { // close 'main' div echo '</div>'; } } } Output: <div id="main"> <div id="menu">Task 1</div> <div class="submenu">Subtask 1</div> <div class="submenu">SubSubTask 1</div> </div> <div id="main"> <div id="menu">Task 2</div> <div class="submenu">Subtask 2</div> <div class="submenu">SubSubTask 2</div> </div> <div id="main"> <div id="menu">Task 3</div> <div class="submenu">Subtask 3</div> </div> <div id="main"> <div id="menu">Task 4</div> <div class="submenu">Subtask 4</div> </div> The problem is: Both the SubTask and SubSubTask divs have the same class of 'submenu'. <div class="submenu">Subtask 1</div> <div class="submenu">SubSubTask 1</div> I'm trying to get them to have different class names, like so: <div class="submenu">Subtask 1</div> <div class="subsubmenu">SubSubTask 1</div> How might I structure the function to accomplish this? Any ideas would be helpful. ~ David Link to comment Share on other sites More sharing options...
Larry Posted May 16, 2017 Share Posted May 16, 2017 If I'm following correctly, you could add a counter to the loop so that when the counter is 0, it uses the submenu class and when it's not, it uses the subsubmenu class (incrementing the counter within the loop). That being said this is probably unnecessary as what you're trying to accomplish can probably be done using CSS instead of different class names. Link to comment Share on other sites More sharing options...
Recommended Posts