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.php
是 return "World!";
,而不是 echo。
现在,情况是这样的:
- 你包含了这个文件,它没有打印任何东西,这是正确的。
- 您将字符串 "Hello" 和
printOut()
的 return 值 连接起来。这意味着,首先调用该函数:
- printOut() 执行并打印 "World!",return 什么都不打印。
- 然后您的主脚本将 "Hello" 与任何内容连接起来并打印出来。
我这里有两个文件:
ToBeIncludedFile.php
<?php
function printOut(){
echo "World!";
}
?>
MainFile.php
<?php
include("ToBeIncludedFile.php");
echo "Hello ".printOut();
?>
我希望 "Hello World!"。相反,我得到这个:"World!Hello "。
我知道如果我写 return 而不是回显,那么一切都很好。是因为我正在回显一个已经在回显字符串的函数吗?但是为什么它会先打印出字符串 "World!" 而不是抛出错误呢?
它首先回显的原因是因为它被调用,之后是字符串"concatenated"(稍后会详细介绍):
你想要的 ToBeIncludedFile.php
是 return "World!";
,而不是 echo。
现在,情况是这样的:
- 你包含了这个文件,它没有打印任何东西,这是正确的。
- 您将字符串 "Hello" 和
printOut()
的 return 值 连接起来。这意味着,首先调用该函数: - printOut() 执行并打印 "World!",return 什么都不打印。
- 然后您的主脚本将 "Hello" 与任何内容连接起来并打印出来。