How do I remove an array element from within a recursive function?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have an array like this and I simply need to recurse over it and find
a matching "menu" item to remove:

array(3) {

 ["dart"]=>
  array(10) {
    [0]=>
    object(menuItem)#4 (9) {
      ["menu"]=>
      string(7) "My DART"
      ["name"]=>
      string(7) "My DART"
      ["title"]=>
      string(39) "Data Analasys & Reliability Tracker"
      ["employee_only"]=>
      bool(false)
      ["page"]=>
      NULL
      ["children"]=>
      NULL
      ["parent"]=>
      NULL
      ["current"]=>
      bool(false)
      ["array_key"]=>
      string(4) "dart"
    }
    [1]=>
    object(menuItem)#5 (9) {
      ["menu"]=>
      string(5) "Login"
      ["name"]=>
      string(5) "Login"
      ["title"]=>
      string(5) "Login"
      ["employee_only"]=>
      bool(false)
      ["page"]=>
      string(9) "login.php"
      ["children"]=>
      NULL
      ["parent"]=>
      NULL
      ["current"]=>
      bool(false)
      ["array_key"]=>
      string(4) "dart"
    }
    [2]=>
    object(menuItem)#6 (9) {
      ["menu"]=>
      string(13) "Lost Password"
      ["name"]=>
      string(13) "Lost Password"
      ["title"]=>
      string(13) "Lost Password"
      ["employee_only"]=>
      bool(false)
      ["page"]=>
      string(12) "forgotpw.php"
      ["children"]=>
      NULL
      ["parent"]=>
      NULL
      ["current"]=>
      bool(false)
      ["array_key"]=>
      string(4) "dart"
    }
...

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?

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);
				}
			}
		}
	}

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux