php包括打印1

时间:2011-02-23 03:29:14

标签: php

我编码以下

<?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”包括在内。

8 个答案:

答案 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)

让file.txt包含xxx

 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);