php5:如果我打电话,那么包括函数的功能总是首先回声?

我有两个文件在这里:

tobeincludedfile.php.

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

MainFile.php.

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

echo "Hello ".printOut();
?>

I would expect “Hello World!”. Instead I get this: “World!Hello “.

我知道我是否写回归而不是回声,那么一切都很好。是因为我正在回应已经回应字符串的函数吗?但那么为什么它会打印出字符串“世界!”首先,没有抛出错误?

回答 1

  1. 赞同 3

    首先回声的原因是因为它被称为,和在“Concatentated”中的字符串(在一秒钟内更多):

    你想要什么ToBeIncludedFile.phpIS.return "World!";,不回声。

    现在,这是会发生的事情:

    • 您包含该文件,不打印任何内容,这是正确的。
    • You do a concatenation of the string "Hello" and the RETURN值OF.printOut().这意味着,首先调用函数:
    • printout()执行和打印“世界!”,返回任何东西。
    • 您的主脚本然后将“Hello”连接并无打印并打印。

    L3VIATHAN
    ...但我仍然没有得到函数首先执行的原因。在PHP的创造者说,必须有一个原因,该函数必须先执行,右图?为什么函数首先执行?Thadeuszlay
    因为在评估之前,表达式首先需要执行所有部分。想象一下echo 5 + max([10,2]);.回波之前可以打印两个值的总和,它hasexecute.max,否则它不知道列表的最大值是多少。L3VIATHAN