It works fine with one project, but the function contains a reference to the project name, so because of lazy evaluation, $projid will pick up the value from the most recent factory function call. E.g.

$project writeup

setting $writeup=[[https://www.drupal.org/project/$projid $projid]]

$project views

setting $views=[[https://www.drupal.org/project/$projid $projid]]

Two very important Drupal projects are views (views) and writeup (views) —the writeup link is picking up the variable from views.