我编码以下
<?php
if ($id = mysql_real_escape_string(@$_GET['pid'])
&& $uid = mysql_real_escape_string(@$_GET['file']))
echo include "foo.php";
else
echo include "bar.php";
?>
当我将include函数与设计用于输出到页面的函数结合使用时(例如,或echo包含'foo.php'),它返回include但在内容之后带有“1”包括在内。
答案 0 :(得分:21)
echo include "foo.php"
应该是
include 'foo.php';
答案 1 :(得分:6)
请注意,使用不带echo的include时也会发生这种情况:
<?= include 'foo.php'; ?>
在脚本中使用时,这也将打印出1的返回值。要摆脱这种情况,您需要删除语句中的'='符号,如下所示:
<? include 'foo.php'; ?>
PHP现在将打印出没有返回值的文件内容。
答案 2 :(得分:3)
Okey所以这里的答案实际上并不完全正确;从某种意义上说,甚至会产生误导。
include
获取文件的内容并将它们放在上下文中。更常见的用途之一是传递可变范围,即。通过将scoped变量包含在处理程序中并在视图上使用include
来在视图中传递范围变量。常见,但也有其他用途;您也可以在return
文件中included
。
假设您有这样的文件:
<?php return array
(
'some',
'php'
'based'
'configuration',
'file'
); # config
完成$config = include 'example-config-above.php';
完全正常,您将在$config
变量中获得上面的数组。
如果您尝试包含没有return
语句的文件,那么您将获得1
。
得到时间
您可能认为include 'example-config-above.php';
实际上正在搜索调用include
的文件所在的目录中的文件,但它也是,但它也在各种其他路径中搜索该文件,那些其他路径优先于本地路径!
所以如果你知道你有一个类似上面的文件,里面有return
,但是得到1
并且可能有类似奇怪的PEAR错误等等,那么你可能会做类似的事情。这个:
// on a lot of server setups this will load a random pear class
include 'system.php'
由于它正在加载没有返回的文件,因此您将得到1
而不是(在我们的示例中)我们期望的配置数组。
简单修复当然是:
include __DIR__.'/system.php'
答案 3 :(得分:1)
echo include("file.txt");
返回, XXX1
'1'是include函数的返回值,表示文件被访问成功。否则它什么都不返回,在这种情况下会抛出解析错误。
echo print "hello";
这也回来了, hello1
同上; '1'表示成功,它已打印出来。
echo echo "hello";
print echo "hello";
上述两种情况都会产生错误。 由于echo函数没有返回值,因此未定义。
echo echo "hello"; print echo "hello";
(1st) (2nd)
现在两种情况下的第二个'echo'都会产生一个未定义的。第一个'echo'或'print'不能接受带有undefined(由第二个echo产生)的hello输出。
if((print "hello")==1)
echo "hey!";
output: hellohey! ('echo' in the 2nd line can be a print, it doesn't matter)
类似地,
if((include ("file.txt"))==1)
echo "hey!";
output: xxxhey!
另一方面,
if((echo "hello")==1)
echo "hey!";
output: an error
在前两种情况下,函数(print和include)返回1,在第三种情况下,'echo'不产生返回值(未定义),因此第三种情况产生错误。
答案 4 :(得分:0)
=分配运算符
==用于检查等于
检查php运算符
答案 5 :(得分:0)
这是因为include函数在成功时返回1。正如你所说,你得到'我的名字是earl1',因为包含文件中的代码首先运行,打印'我的名字是伯爵'然后你本地回显运行打印include()的返回值,即1。
答案 6 :(得分:0)
嗯......我正在使用Codeigniter(php框架工作)。我遇到了同样的问题。我得出的结论是,当我们尝试打印/回显include方法时,它会在屏幕上打印1,当我们只是简单地编写include命令时(下面给出的例子),它只会做它应该做的事情。
<?php include('file/path'); ?> // this works fine for me
<?= include('file/path'); ?> // this works fine but prints "1" on screen
希望我的解释对某人有帮助
答案 7 :(得分:-1)
echo substr(include(“ foo.php”),1,-1);