php中与require_once()相关的变量传递的问题 40
在a.php当中,赋值一个变量$var在a.php中,使用require_once调用b.php,c.php,在c.php中使用require_once调用d.php$v...
在a.php当中,赋值一个变量$var
在a.php中,使用require_once调用b.php, c.php,在c.php中使用require_once调用d.php
$var直接赋予某个数值,如$var = 12;时,在b/c/d.php中均可正常读取并使用$var, 当使用另外一个变量赋值,如$var = $xxx,则只在b/c中可正常读取使用$var, 而在d.php中就无法读取$var.
这是怎么回事啊?在用变量赋值的情况下,怎么才能让d.php也正常读取使用$var呢?
非常感谢“阳光上的桥、新翼追风,aupm”。我是为了实现一个特别的功能,而自己修改代码,才出现了上述的情况。再仔细研究之后,发现问题可能不是我上面讲的。
。。。。。
if 。。。。
} elseif ($modelid > 0) {
if ($postTopic) {
$postTopic->postCheck();
}
$topichtml = $postTopic->getTopicHtml($modelid,$add); // A处:$add就是我的目标变量,在此处是有效的。
} elseif ($pcid > 0) {
。。。
}
require_once(R_P . 'lib/topicpost.class.php'); //B处: topicpost.class.php就是调用的文件
$topicpost = new topicPost($pwpost);
if (empty($_POST['step'])) {
。。。。
} elseif ($_POST['step'] == 2) {
。。。。
$topicpost->execute($postdata,$add); //C处:再次使用$add变量,但无效果。execute函数在topicpost.class.php中定义。
。。。。
}
如果在文件最前面定义$add = 12(或其他具体数值,则在C处有效,如果是直接使用,则只在A处有效,在C处无效。在B处和C处之间有一些代码,也有一些require_once, 但感觉都无关,而且都不使用$add变量。
怪异啊?大侠们请帮忙解释下什么原因? 展开
在a.php中,使用require_once调用b.php, c.php,在c.php中使用require_once调用d.php
$var直接赋予某个数值,如$var = 12;时,在b/c/d.php中均可正常读取并使用$var, 当使用另外一个变量赋值,如$var = $xxx,则只在b/c中可正常读取使用$var, 而在d.php中就无法读取$var.
这是怎么回事啊?在用变量赋值的情况下,怎么才能让d.php也正常读取使用$var呢?
非常感谢“阳光上的桥、新翼追风,aupm”。我是为了实现一个特别的功能,而自己修改代码,才出现了上述的情况。再仔细研究之后,发现问题可能不是我上面讲的。
。。。。。
if 。。。。
} elseif ($modelid > 0) {
if ($postTopic) {
$postTopic->postCheck();
}
$topichtml = $postTopic->getTopicHtml($modelid,$add); // A处:$add就是我的目标变量,在此处是有效的。
} elseif ($pcid > 0) {
。。。
}
require_once(R_P . 'lib/topicpost.class.php'); //B处: topicpost.class.php就是调用的文件
$topicpost = new topicPost($pwpost);
if (empty($_POST['step'])) {
。。。。
} elseif ($_POST['step'] == 2) {
。。。。
$topicpost->execute($postdata,$add); //C处:再次使用$add变量,但无效果。execute函数在topicpost.class.php中定义。
。。。。
}
如果在文件最前面定义$add = 12(或其他具体数值,则在C处有效,如果是直接使用,则只在A处有效,在C处无效。在B处和C处之间有一些代码,也有一些require_once, 但感觉都无关,而且都不使用$add变量。
怪异啊?大侠们请帮忙解释下什么原因? 展开
4个回答
展开全部
非常不建议这样写代码。
require_once()是调用公用的代码段(b.php,c.php,d.php),而你在公用的代码段又使用私有(a.php)中的变量值,这样不符合代码的规范。
也许楼主是为了学习相互调用的过程,但本人认为,应该在最初始的学习阶段,就学习并深刻理解规范的代码编写,这样对以后的工作非常有用。
require_once()是调用公用的代码段(b.php,c.php,d.php),而你在公用的代码段又使用私有(a.php)中的变量值,这样不符合代码的规范。
也许楼主是为了学习相互调用的过程,但本人认为,应该在最初始的学习阶段,就学习并深刻理解规范的代码编写,这样对以后的工作非常有用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的这样的情况应该不可能的,你自己编写四个只有一两行的测试的a.php、b.php、c.php、d.php试试看,无论是否使用变量,都能使用,除非你赋值语句在require_once之后。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
require 好像 就是直接包含进来的。比include多了一层是否存在的判断罢了(个人理解)。
应该不会出现你说的情况。你看下是不是其他的原因造成的。
应该不会出现你说的情况。你看下是不是其他的原因造成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题很有可能是$var 或者 $xxx 在a,b,c,d 四个文件中,变量被重用或者说覆盖了.请仔细检查下有没有变量重用的.导致变量传递不正常.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |