PHP5: Как включить включенную функцию, всегда эхо, если я ее назову?

У меня есть два файла:

ToBeIncludedFile.php

<?php function printOut(){ echo "World!"; } ?> 

mainfile.php

 <?php include("ToBeIncludedFile.php"); echo "Hello ".printOut(); ?> в <?php include("ToBeIncludedFile.php"); echo "Hello ".printOut(); ?> 

Я бы ожидал «Hello World!». Вместо этого я получаю следующее: «Мир! Привет».

Я знаю, если я напишу return вместо echo, тогда все будет хорошо. Это потому, что я повторяю функцию, которая уже вторит строке? Но зачем тогда печатать строку «Мир!» сначала и не бросать ошибку?

Related of "PHP5: Как включить включенную функцию, всегда эхо, если я ее назову?"

Причина, по которой это происходит, заключается в том, что она называется, а затем строки «конкатенированы» (более того, через секунду):

То, что вы хотите в ToBeIncludedFile.php – это return "World!"; , а не эхо.

Прямо сейчас, это то, что происходит:

  • Вы включаете файл, который ничего не печатает, это правильно.
  • Вы выполняете конкатенацию строки «Hello» и возвращаемое значение printOut() . Это означает, что сначала эта функция называется:
  • printOut () выполняет и печатает «Мир!», ничего не возвращая.
  • Затем ваш основной скрипт объединяет «Hello» и ничего не выводит.