include_once 并包含函数 return 奇怪的输出

include_once and include function return strange output

这是我的代码:

abc.php

<?php

for($i=1;$i<4;$i++){
    echo include_once('text.php');
    echo include('text.php');
}

?>

text.php

Hello World

Returns 输出:

Hello World1Hello World11Hello World11Hello World1

以上输出中的 1 是什么?

1 是 include_once 调用的 return 值。如果包含 include_once 不存在的文件,return 结果将为 false。 如果您尝试使用 include_once 再次包含同一文件,则 return 值将为真。

以下是所有迭代:

1) include_once: Hello World1 // include file echo automaticaly, and echo 1 (success)
   include: Hello World1 // include file echo automaticaly, and echo 1 (success)
2) include_once: 1 // included already only success...
   include: Hello World1
3) include_once: 1 // included already only success...
   include: Hello World1
4) include_once: 1 // included already only success...
   include: Hello World1

输出:Hello World1Hello World11Hello World11Hello World1.

如注释中所述,include 自动回显代码,因此 echo include 回显文件,并回显 include 函数的 return 值 :)。这是真的 = 1.

去掉include & include_once前面的echo .

这是错误的

echo include_once('text.php');

回声包括('text.php');

在这些函数前面放置 echo 只会 return 是否找到并包含文件。 jacek-kowalewski 早些时候指出了这一点。尽管说 include 自动 echoes 可能有点令人困惑。 include() 将代码注入到函数调用的主文件中。包含文件的内容可能只是文本,也可能是更多 php 代码。如果是更多代码,除非调用 echo 函数,否则它不会回显任何内容。


我不明白对同一个文件使用 includeinclude_once? - text.php

同时使用 include_once()include() 会产生一种相互抵消的情况。 include_once('text.php')表示text.php可以仅在主脚本中包含一次。另一方面,包含将允许 text.php 包含与调用函数一样多的次数。但是在这种情况下 text.php 不能多次调用,因为 include_once() 已经设置了一次规则。 See Includes Canceling

如果有一串文字要连续两次输出到网页,那么应该把echo命令放在[=里面88=] 文件:

echo 'My String of Text';

echo 'My Second String of Text';

然后将include_once放入您的主脚本中:

include_once('text.php');

您可能想像这样重写您的脚本:

for($i=0;$i<5;$i++){
echo 'Text '.$i.'<br />';
 $i =$i+1;
echo 'Text '.$i.'<br />';
}

您的输出将是:

Text 0
Text 1
Text 2
Text 3
Text 4
Text 5