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

Reply via email to