PHP5: 为什么我调用包含的函数总是先回显?

PHP5: How come an included function always echoes first if I call it?

我这里有两个文件:

ToBeIncludedFile.php

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

MainFile.php

<?php
include("ToBeIncludedFile.php");

echo "Hello ".printOut();
?>

我希望 "Hello World!"。相反,我得到这个:"World!Hello "。

我知道如果我写 return 而不是回显,那么一切都很好。是因为我正在回显一个已经在回显字符串的函数吗?但是为什么它会先打印出字符串 "World!" 而不是抛出错误呢?

它首先回显的原因是因为它被调用,之后是字符串"concatenated"(稍后会详细介绍):

你想要的 ToBeIncludedFile.phpreturn "World!";,而不是 echo。

现在,情况是这样的:

  • 你包含了这个文件,它没有打印任何东西,这是正确的。
  • 您将字符串 "Hello" 和 printOut()return 值 连接起来。这意味着,首先调用该函数:
  • printOut() 执行并打印 "World!",return 什么都不打印。
  • 然后您的主脚本将 "Hello" 与任何内容连接起来并打印出来。