i have an array as follows and i want to build a nested options of Select DropDown
array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '5',
'name' => 'Mud',
'parent_id' => '0'
),
'children' => array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '6',
'name' => 'Sand',
'parent_id' => '5'
),
'children' => array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '7',
'name' => 'Soil',
'parent_id' => '6'
),
'children' => array()
)
)
)
)
),
(int) 1 => array(
'ProductCategory' => array(
'id' => '8',
'name' => 'House',
'parent_id' => '0'
),
'children' => array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '9',
'name' => 'Door',
'parent_id' => '8'
),
'children' => array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '11',
'name' => 'Latch',
'parent_id' => '9'
),
'children' => array()
),
(int) 1 => array(
'ProductCategory' => array(
'id' => '12',
'name' => 'Glass',
'parent_id' => '9'
),
'children' => array(
(int) 0 => array(
'ProductCategory' => array(
'id' => '13',
'name' => 'Semi ',
'parent_id' => '12'
),
'children' => array()
)
)
)
)
),
(int) 1 => array(
'ProductCategory' => array(
'id' => '10',
'name' => 'Window',
'parent_id' => '8'
),
'children' => array()
)
)
)
)
Am looking for an Efficient way to loop through and create HTML Code as follows. I am not sure how many level it will have. so i need a proof looping.
<select>
<optgroup label="Level One">
<option> A.1 </option>
<optgroup label="Level Two">
<option> A.B.1 </option>
</optgroup>
<option> A.2 </option>
</optgroup>
</select>
Example of Nested Look via Dropdown
News
--Sport
----Sky
----Football
------Football-1
--War
----War1
--tech
Article
--tech
----tech2
------tech3
--php
--linux
There is no solution to use multilevel deep in select
tag (HTML restrictions).
But You can build simple dropdown without optgroup
using HtmlHelper::nestedList();