PHP- Checking for sub-arrays in a multidimensional array -
i have array contains data build nav menu on site.
this how it's setup:
$menu = array(); $menu['0']['label'] = 'home'; $menu['0']['icon'] = 'fa-home'; $menu['0']['id'] = ''; $menu['0']['class'] = ''; $menu['0']['url'] = '/index.php'; $menu['0']['blank'] = 0; $menu['1']['label'] = 'admin'; $menu['1']['icon'] = 'fa-user'; $menu['1']['id'] = ''; $menu['1']['class'] = ''; $menu['1']['url'] = '#'; $menu['1']['blank'] = 0; $menu['1']['0']['label'] = 'notes'; $menu['1']['0']['icon'] = ''; $menu['1']['0']['id'] = ''; $menu['1']['0']['class'] = ''; $menu['1']['0']['url'] = '/notes.php'; $menu['1']['0']['blank'] = 0; $menu['1']['1']['label'] = 'testing'; $menu['1']['1']['icon'] = ''; $menu['1']['1']['id'] = ''; $menu['1']['1']['class'] = ''; $menu['1']['1']['url'] = '/testing.php'; $menu['1']['1']['blank'] = 0; $menu['2']['label'] = 'resources'; $menu['2']['icon'] = 'fa-thumb-tack'; $menu['2']['id'] = ''; $menu['2']['class'] = ''; $menu['2']['url'] = '#'; $menu['2']['blank'] = 0; where $menu['0'], $menu['1'], etc. shown on main nav menu. array underneath them, such $menu['1']['0'] submenus under parent.
i trying check each main element on array see if there sub-array (if there submenus create).
foreach ($menu $item) { if (is_array($item)) { foreach ($item $subitem) { print_r($subitem); // see notes below } } } what trying print_r($subitem) come array like:
$subitem['label'] = 'notes'; $subitem['icon'] = ''; $subitem['id'] = ''; $subitem['class'] = ''; $subitem['url'] = '/notes.php'; $subitem['blank'] = 0; ideas?
you should reorganize array:
$menu[0] = ['items' => [], 'submenus' => []]; so menus have items key , submenus key. in submenus array, should put array looks identical (that is, has , 'items' key , 'submenus' key).
that way can count() submenus key , know if there submenus create. let nest them far want if write recursive function menu.
for example:
<?php // feed initialized menu, , array of items function addmenuitem($menu, $options) { $newitem = makemenu(); $newitem['items'] = $options; $menu[] = $newitem; return $menu; } // parent menu first, submenu second function addsubmenu($menu, $pos, $submenu) { $menu[$pos]['submenus'][] = $submenu; return $menu; } // create 'valid' empty menu array function makemenu() { return array('items' => array(), 'submenus' => array()); } ?> as side note, work in classes instead of functions , arrays.
Comments
Post a Comment