PHP包含文件中的未定义变量错误[重复]
Posted
技术标签:
【中文标题】PHP包含文件中的未定义变量错误[重复]【英文标题】:Undefined variable error in PHP include file [duplicate] 【发布时间】:2012-10-29 23:19:32 【问题描述】:可能重复:Undefined variable problem with php function
谁能告诉我为什么我的 PHP 包含文件中不断收到未定义的变量错误消息?
<?php
$page = 1;
if (isset($_REQUEST['page']))
$page = $_REQUEST['page'];
function phpRocks()
require("includes/dostuff.php");
if ($search)
phpRocks();
?>
然后在 dostuff.php 中:
<?php echo $page; ?>
这是我得到的错误:
注意:未定义变量:/dostuff.php 中的页面 上线 61
Attn down voters/close requesters:没有显示任何研究工作?为何如此?我还应该添加什么?我为此困惑了半个小时,找不到任何其他回答这个问题的帖子。我是否需要成为 PHP 专家才能发布问题(因此我不会发布任何问题!)??
【问题讨论】:
可变范围。您在全局范围内声明,但从具有自己的本地 var 范围的函数中打开模板。 你确定$page
正在设置吗?
phpRocks()
在哪里调用?
虽然这个问题的作者和重复问题的作者都遇到了同样的问题,但这个问题的标题提到了 PHP 的包含机制,而另一个没有。我遇到了文件包含问题,重复的问题无法回答,因此它不是重复的 IMO。
【参考方案1】:
马里奥明白了。这样做:
function phpRocks()
global $page;
require("includes/dostuff.php");
【讨论】:
这正是我所需要的。谢谢! 阅读范围 Zoolander,这是你的问题 感谢您的出色回答【参考方案2】:您必须像这样将变量声明为全局变量:
function phpRocks()
global $page; //set variable to global
require("includes/dostuff.php");
【讨论】:
【参考方案3】:您将文件包含在函数中。因此,所有包含代码的范围都是函数的范围。函数内部不存在变量$page
。传入:
function phpRocks($page)
require "includes/dostuff.php";
phpRocks($page);
【讨论】:
为什么我是唯一一个支持注射的人而不是global
spaghetti?
其他人都将马里奥的评论放入答案表格中,以便获得声誉。你是唯一一个真正添加了相关内容的人。
我不确定这是不是最好的解决方案。 $page
应该在这里是一个全局变量IMO ...它是在全局范围内创建的一个包含文件需要使用的变量。函数调用与此无关。另外,他将来可能希望将“真实”参数传递给函数,以便在dostuff.php
之外使用。这避免了两者之间的混淆。
@sgroves 它与函数有一切。该函数引入了一个新的范围,即 good。任何跨越该范围边界的值都应显式传入并返回。具有这些值的函数内部发生的任何事情都是无关紧要的。包含的文件“认为”变量是全局的也无关紧要,无论哪种方式,包含的文件都没有任何变化。您将函数绑定到它没有影响的周围范围。这就是代码耦合,应该始终避免。
非常有帮助,谢谢...这是最好的答案【参考方案4】:
在你的函数中添加全局变量
function phpRocks()
global $page;
require("includes/dostuff.php");
【讨论】:
以上是关于PHP包含文件中的未定义变量错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章