PHP5:如果我调用一个包含的函数,为什么它总是首先响应呢


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

我在这里有两个文件:

ToBeIncludedFile.php

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

主文件.php

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

我会期待"你好,世界!"。相反,我得到的是:"世界!你好"。

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

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

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

现在,情况就是这样:

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