echo '<div id="output">' . some_text() . '</div>';
'<div id="output">' . some_text() . '</div>'
все собирается в буфер, но при some_text()
срабатывает другое echo (внутри функции), ей нечего ждать и выводит сразу, при этом функция вернула строке null, ее присоединили как пустое значение '', дальше вторая часть строки и только теперь основной echo готов показать всю строку