php中与require_once()相关的变量传递的问题

在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变量。
怪异啊?大侠们请帮忙解释下什么原因?

第1个回答  2010-04-28
非常不建议这样写代码。

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

也许楼主是为了学习相互调用的过程,但本人认为,应该在最初始的学习阶段,就学习并深刻理解规范的代码编写,这样对以后的工作非常有用。
第2个回答  2010-04-28
你说的这样的情况应该不可能的,你自己编写四个只有一两行的测试的a.php、b.php、c.php、d.php试试看,无论是否使用变量,都能使用,除非你赋值语句在require_once之后。本回答被网友采纳
第3个回答  2010-04-28
require 好像 就是直接包含进来的。比include多了一层是否存在的判断罢了(个人理解)。

应该不会出现你说的情况。你看下是不是其他的原因造成的。
第4个回答  推荐于2018-03-29
你的问题很有可能是$var 或者 $xxx 在a,b,c,d 四个文件中,变量被重用或者说覆盖了.请仔细检查下有没有变量重用的.导致变量传递不正常.本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网