Re: How do I remove an array element from within a recursive function?
| From: | Shawn McKenzie | Date: | Fri, 27 Feb 2009 02:10:20 +0000 |
| Subject: | Re: How do I remove an array element from within a recursive function? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-288895@lists.php.net to get a copy of this message | ||
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);
> }
> }
> }
> }
>
--
Thanks!
-Shawn
http://www.spidean.com