Код (PHP): function test() { echo "call test"; }; echo "<p>".test()."</p>"; Результат: Код (PHP): call test<p></p> Выходит по документации https://php.net/manual/ru/function.echo.php это и есть "echo не всегда может быть использована в контексте функции"?
не в контексте функции значит что это конструкция. echo 1,2,3 - даст тот же результат что и echo 1 . 2 . 3 только без лишней конкатенации строк в памяти. тупо в стдаут. в твоем примере всё корректно. ты хочешь напечатать результат конкатенации тега + результата выполнения функции + тега. вызывается функция. она печатает сама в стдаут. и ничего не возвращает вызывающему алгоритму. значит между двумя тегами помещается пустая строка. и результат конкатенации в свою очередь лезет в аут. а в ауте он соответственно идет после того как туда попал эхо при вызове функции тест. попробуй точки заменить на запятые и получишь более ожидаемый результат. да, функция тест так ничего и не вернет, но на место пустой строки будет записана "кол тест" из функции и этот текст получится между тегов.