Shawn McKenzie wrote: > Daevid Vincent wrote: > > I'm trying to remove ["menu"] == 'Login' from the array, but despite > "finding" the element, it never removes. >> isn't that what the & reference stuff is for? > > Yes, but foreach can't modify an array unless you use a reference in the > foreach also. Try this: > > foreach($menuItems as &$value) > > >> menuItem::removeMenuItems($navArray['dart'], array('Login', 'Lost Password')); >> >> >> public static final function removeMenuItems(&$menuItems, $removeArray) >> { >> foreach($menuItems as $value) >> { >> if (is_array($value->children)) >> menuItem::removeMenuItems(&$value->children, $removeArray); >> else >> { >> //echo "*** CHECKING ".$value->menu." against ".implode(',',$removeArray)." ***"; >> if (in_array($value->menu, $removeArray)) >> { >> //echo "*** REMOVING ".$value->menu." ***"; >> unset($value); >> } >> } >> } >> } >> > > Also, I'm not sure what happens here: if (is_array($value->children)) menuItem::removeMenuItems(&$value->children, $removeArray); else { Your function defines that var as a reference so you don't have to use a reference in the call. Don't know if it does anything but throw a deprecated notice though. -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php