diff --git src/bp-core/classes/class-bp-core-nav.php src/bp-core/classes/class-bp-core-nav.php
index ed97c36..eaab9b8 100644
--- src/bp-core/classes/class-bp-core-nav.php
+++ src/bp-core/classes/class-bp-core-nav.php
@@ -258,14 +258,21 @@ class BP_Core_Nav {
 				return false;
 			}
 
-			$screen_functions = array( $nav_item->screen_function );
+			/**
+			 * As we are using array_unique() a bit later, in case a plugin is using
+			 * the method of a class to set the screen function of a nav item, we need
+			 * to serialize/unserialize arrays to avoid a notice error.
+			 *
+			 * @see https://buddypress.trac.wordpress.org/ticket/7203
+			 */
+			$screen_functions = array( maybe_serialize( $nav_item->screen_function ) );
 
 			// Life's unfair, children won't survive the parent :(
 			$sub_items = $this->get_secondary( array( 'parent_slug' => $nav_item->slug ), false );
 
 			if ( ! empty( $sub_items ) ) {
 				foreach ( $sub_items as $sub_item ) {
-					$screen_functions[] = $sub_item->screen_function;
+					$screen_functions[] = maybe_serialize( $sub_item->screen_function );
 
 					// Delete the child
 					unset( $this->nav[ $this->object_id ][ $nav_item->slug . '/' . $sub_item->slug ] );
@@ -276,7 +283,7 @@ class BP_Core_Nav {
 			unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
 
 			// Return the deleted item's screen functions.
-			return array_unique( $screen_functions );
+			return array_map( 'maybe_unserialize', array_unique( $screen_functions ) );
 		}
 	}
 
diff --git tests/phpunit/testcases/core/nav/bpCoreRemoveNavItem.php tests/phpunit/testcases/core/nav/bpCoreRemoveNavItem.php
index 0b35708..8003b1c 100644
--- tests/phpunit/testcases/core/nav/bpCoreRemoveNavItem.php
+++ tests/phpunit/testcases/core/nav/bpCoreRemoveNavItem.php
@@ -64,4 +64,48 @@ class BP_Tests_Core_Nav_BpCoreRemoveNavItem extends BP_UnitTestCase {
 		$bp->bp_nav = $_bp_nav;
 		$bp->bp_options_nav = $_bp_options_nav;
 	}
+
+	public function foo_is_active( $retval, $component ) {
+		if ( 'foo' === $component ) {
+			$retval = true;
+		}
+
+		return $retval;
+	}
+	/**
+	 * @ticket BP7203
+	 */
+	public function test_remove_subnav_item_array_as_screen_function() {
+		$bp = buddypress();
+
+		add_filter( 'bp_is_active', array( $this, 'foo_is_active' ), 10, 2 );
+
+		$bp->foo = new stdClass;
+		$bp->foo->nav = new BP_Core_Nav( 0 );
+
+		$expected = array( 'foo', 'bar' );
+
+		bp_core_new_nav_item( array(
+			'name' => 'Foo',
+			'slug' => 'foo',
+			'screen_function' => $expected,
+		), 'foo' );
+
+		bp_core_new_subnav_item( array(
+			'name' => 'Bar',
+			'slug' => 'bar',
+			'parent_slug' => 'foo',
+			'parent_url' => 'foo',
+			'screen_function' => $expected,
+		), 'foo' );
+
+		remove_filter( 'bp_is_active', array( $this, 'foo_is_active' ), 10, 2 );
+
+		$this->assertNotEmpty( $bp->foo->nav->get_primary( array( 'slug' => 'foo' ), false ) );
+
+		$tested = $bp->foo->nav->delete_nav( 'foo' );
+		$this->assertSame( $expected, reset( $tested ) );
+
+		$this->assertEmpty( $bp->foo->nav->get_primary( array( 'slug' => 'foo' ), false ) );
+	}
 }
