我试图找到这个解决方案:
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
需要帮助://
答案 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
的错误。