Эхо в get_albumartistid выполняется сразу, когда функция вызывается во время эха "... "собирает строку перед ее отображением - по существу, буферизирует всю вещь до того, как она отобразит. Возврат вместо echo - это правильный способ справиться с этим, поскольку это эффективно заменит вызов функции возвращаемой строкой. Если бы вы использовали echoвам нужно:
echo "<br/>getalbumartistfunction: ";
get_albumartistid($thisalbum);
Что фактически становится:
echo "<br/>getalbumartistfunction: ";
echo "<The artist id>";
В вашем исходном примере порядок выполнения таков:
echo "<The artist id>";
echo "<br/>getalbumartistfunction: ";
Поскольку всеэхо происходит немедленно, когда он вызывается, и PHP не завершил буферизацию вашего внешнего эхо-запроса.