Foreach aninhado ()

Eu tenho o seguinte array:

Array ( 
  [1] => Array ( 
    [spubid] => A00319 
    [sentered_by] => pubs_batchadd.php
    [sarticle] => Lateral mixing of the waters of the Orinoco, Atabapo
    [spublication] => Acta Cientifica Venezolana
    [stags] => acta,confluence,orinoco,rivers,venezuela,waters
    [authors] => Array ( 
      [1] => Array ( 
        [stype] => Author 
        [iorder] => 1 
        [sfirst] => A
        [slast] => Andersen ) 
      [2] => Array ( 
        [stype] => Author 
        [iorder] => 2 
        [sfirst] => S.
        [slast] => Johnson ) 
      [3] => Array ( 
        [stype] => Author 
        [iorder] => 3 
        [sfirst] => J. 
        [slast] => Doe ) 
      ) 
    ) 
  )

Eu estou usando um foreach () aninhado para percorrer os elementos na matriz externa, mas quando se trata de cuspir a lista de autores estou com problemas. Ou seja, o problema de produzir cada um múltiplo (várias) vezes devido ao aninhamento foreach () louco. Qual seria uma abordagem melhor do que aninhar loops foreach () neste exemplo?

ATUALIZAÇÃO (com solução)

Aqui está o loop que eu decidi, um pouco confuso (IMHO) mas funciona:

$sauthors = NULL;
$stitle = NULL;

foreach($apubs as $apub)
{
  $stitle = $apub['sarticle'];
  foreach($apub as $svar=>$sval)
  {
    if($svar === "authors")
    {
      foreach($sval as $apeople)
      {
        $sauthors .= $apeople['slast'].", ".$apeople['sfirst']."; ";
      }
    }
  }
  echo "$sauthors<br />\n$stitle<br />\n";
}

questionAnswers(4)

yourAnswerToTheQuestion