$item) { if (!in_array($bag, $shiny_list, true) && count(array_intersect($shiny_list, $item)) > 0) { $at_least_one_add = true; $shiny_list[] = $bag; } } if ($at_least_one_add) { return has_shiny_in($total_list, $shiny_list); } return $shiny_list; } var_dump(has_shiny_in($possible_bags));