tienes razón, ya que heredoc va evaluando el PHP de la cadena....
no veo que los puedas solucionar tan fácil.... porque, no solo separas el ciclo... y listo?
osea...
Código PHP:
$foo = <<<BAR
....
BAR;
$out = '';
while (...)
{
$out .= '.....';
}
$bar = <<<CANDY
.....
CANDY;
return $foo.$out.$bar;
o algo así, se entiende?