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包含文件中的未定义变量错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

while循环PHP中的未定义变量错误-访问[关闭]

Php和Sql,未定义的未定义索引[重复]

Codeigniter中foreach循环中的未定义变量

重定向后刀片中的未定义变量

mysqli_query 上的未定义变量

错误:使用 Sass 的 Angular 组件中的未定义变量