Многомерный ассоциативный массив массивов

Поэтому у меня есть следующий код:

$options = array( 'navigation' => array( 'page_title' => 'test', 'menu_title' => 'test_title', 'capabillity' => '', 'menu_slug' => '', 'function' => '', 'icon_url' => '', 'position' => '', 'sub_menues' => array( array( 'page_title' => 'test', 'menu_title' => 'test_title', 'menu_slug' => 'bla' ), array( 'page_title' => 'apples', 'menu_title' => 'test_apples', ), // Set of Navigations ) ), 'settings' => array( array( 'option_group' => 'bla', 'option_name' => '', 'sanitize_call_back' => '' ) ), 'core_template' => 'path/to/admin/template.phtml' ); foreach($options as $setting=>$option){ if($setting == 'navigation' && is_array($option)){ foreach($option as $k=>$v){ if(is_array($v)){ foreach($v as $sub_menu){ foreach($sub_menu as $sk=>$sv){ if(isset($sub_menu[$sk])){ echo $sub_menu['menu_slug']; } } } } if(isset($option[$k])){ echo $option['page_title']; } } } if($setting == 'settings' && is_array($option)){ foreach($option as $settings_options){ foreach($settings_options as $sk => $sv){ if(isset($settings_options[$sk])){ echo $settings_options['option_group']; } } } } if($setting = 'core_template'){ echo $options['core_template']; } } 

Который, да, беспорядок и нуждается в рефакторинге, работает, пока вы не введете переменную, которая не существует. хороший способ увидеть это:

 echo $sub_menu['menu_slug']; 

теперь menu_slug существует в массиве navigation / sub_menues / [0], но не в массиве [1].

Типичный способ исправить это:

 if(isset($sub_menu['menu_slug'])){ // do something } 

Как бы вы ни увидели из массива навигации, будет много, если установлено, сделайте это, иначе сделайте это. и я ищу более чистый и более аккуратный способ, где я могу просто сделать $ sub_menu ['something'], и он автоматически проверяет, существует ли что-то, и если это так, возвращает его значение, если НЕ ничего не делать, просто игнорируйте его.

Теперь у меня есть правильная идея, где я делаю *, если задано $ sub_menu [$ sk] *, и тогда я мог бы сделать:

 echo $sub_menu[$sk]; 

проблема в том, что я вызываю здесь функцию, которая принимает аргументы, аргументы являются значениями ключа, поэтому я должен, например, делать $ sub_menu ['menu_slug'].

Поэтому мой вопрос:

Как мне сделать что-то вроде:

 some_function_call($sub_menu['menu_slug']); 

без необходимости:

 if(isset($sub_menu['menu_slug']) && isset($sub_menu['page_title']) /*...and so on...*/){ some_function_call($sub_menu['menu_slug'], $sub_menu['page_title'] /*..and so on...*/); } 

Уловка? – некоторые параметры, например (например,), могут быть необязательными.

Есть идеи?