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

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -