PHP无法将变量传递给包含的文件

时间:2010-12-04 23:25:26

标签: php variables include

我试图找到这个解决方案:

file1.php

$name = "Jacob";
include ("file2.php");

file2.php

Hi there! <?php echo $name ?>

输出

Hi There! Notice: Undefined variable: name in /volume1/web/test/file2.php on line 9 

需要帮助://

7 个答案:

答案 0 :(得分:9)

您的代码运行正常。

如果您收到该错误,则file1.php肯定不会在全局范围内定义$ name。

Fyi,引自文档:

  

当包含文件时,代码就是它   包含继承变量范围   包含的行   发生。任何可用的变量   调用文件中的那一行将是   在被调用文件中可用,来自   那一点。但是,所有   中定义的函数和类   包含文件具有全局范围。

我的测试用php-5.3.3-pl1-gentoo(cli),以防你在使用的任何版本中出现PHP错误 - 但我怀疑:

[thiefmaster@hades:~]> cat inc1.php
<?php
$name = 'bleh';
include('inc2.php');
?>
[thiefmaster@hades:~]> cat inc2.php
Hi there! <?php echo $name; ?>
[thiefmaster@hades:~]> php inc1.php
Hi there! bleh

答案 1 :(得分:4)

确保您的网址以file1.php而非file2.php或其他包含file2.php的文件结尾。另外,请尝试将这两个文件简化为您在此处发布的文件(加<?php开头的file1.php)以排除周围代码。

答案 2 :(得分:2)

我遇到了同样的问题并修复了这样的问题:

$name = "Jacob";
include ("file2.php");

<强> file2.php

$name = $name; //add this line
Hi there! <?php echo $name ?>

我无法解释为什么它应该像这样工作。 只是它奏效了。

答案 3 :(得分:1)

我有时会被愚弄(为了被困扰而短缺)而忘记使用基本文件在线检查项目。

例如,如果使用名为index.php且包含inc.php的基本文件,请确保启动index.php而不是包含文件。

inc.php文件将在浏览器中显示错误,因为它没有链接到index.php变量,而index.php文件包含变量和包含。

答案 4 :(得分:0)

尝试使用此代码

global $name;    
$name = "Jacob";    
include ("file2.php");

**和file2.php内部

global $name;
echo "Hi there! ".$name;

我认为这会起作用

答案 5 :(得分:0)

我改用环境变量。它解决了这个问题。

即。

$_ENV["name"] = "Jacob";

file2.php

echo $_ENV["name"];

答案 6 :(得分:0)

如果您想打印/使用$name变量,那么您必须先在file2中将该变量声明为$name="",然后您可以轻松使用它,而无需声明,将收到Undefined Variable的错误。