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变量。
怪异啊?大侠们请帮忙解释下什么原因?
展开
 我来答
导游学苑
2010-04-28 · TA获得超过580个赞
知道小有建树答主
回答量:369
采纳率:42%
帮助的人:200万
展开全部
非常不建议这样写代码。

require_once()是调用公用的代码段(b.php,c.php,d.php),而你在公用的代码段又使用私有(a.php)中的变量值,这样不符合代码的规范。

也许楼主是为了学习相互调用的过程,但本人认为,应该在最初始的学习阶段,就学习并深刻理解规范的代码编写,这样对以后的工作非常有用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2010-04-28 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
你说的这样的情况应该不可能的,你自己编写四个只有一两行的测试的a.php、b.php、c.php、d.php试试看,无论是否使用变量,都能使用,除非你赋值语句在require_once之后。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
新翼追风
2010-04-28 · TA获得超过1134个赞
知道小有建树答主
回答量:544
采纳率:0%
帮助的人:496万
展开全部
require 好像 就是直接包含进来的。比include多了一层是否存在的判断罢了(个人理解)。

应该不会出现你说的情况。你看下是不是其他的原因造成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友410974e5c
推荐于2018-03-29 · 超过18用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:53万
展开全部
你的问题很有可能是$var 或者 $xxx 在a,b,c,d 四个文件中,变量被重用或者说覆盖了.请仔细检查下有没有变量重用的.导致变量传递不正常.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式