WordPress Add Leveling Classes to Menu Items

Many times when I am building mega menus and need additional classes to write cleaner CSS I like to add level classes to the WordPress menu items. I like to use a simple PHP function to add classes like .level-0, .level-1, .level-2 to the li depending on its depth from the top most nav item. Not only is my code cleaner, I also don't have to worry about item-id's or using nth-child() on anything.
Add to functions.php:
<?php add_filter('wp_nav_menu_objects' , 'level_menu_classes'); function level_menu_classes($menu) { $level = 0; $stack = array('0'); foreach($menu as $key => $item) { while($item->menu_item_parent != array_pop($stack)) { $level--; } $level++; $stack[] = $item->menu_item_parent; $stack[] = $item->ID; $menu[$key]->classes[] = 'level-'. ($level - 1); } return $menu; } ?>