Php 可变范围和包括

Php 可变范围和包括,php,wordpress,Php,Wordpress,我有以下问题:在index.php中,我设置了变量$activelang。我 $activelang = active_language (); echo $activelang; //works perfectly 在后面的index.php代码中,我包含了一个新的php文件 include ('myotherfile.php'); 如果我尝试在myotherfile.php中使用$activelang,它就不起作用了!我没有在函数中使用它,我尝试使用全局$activelang,但它也

我有以下问题:在index.php中,我设置了变量$activelang。我

$activelang = active_language (); 
echo $activelang; //works perfectly 
在后面的index.php代码中,我包含了一个新的php文件

include ('myotherfile.php');
如果我尝试在myotherfile.php中使用$activelang,它就不起作用了!我没有在函数中使用它,我尝试使用全局$activelang,但它也不起作用

所有这些都发生在wordpress安装中,但我所说的代码是纯php。我使用的是PHP5.3


为什么会这样?据我所知,include在我的主文件中起到复制粘贴的作用,因此我不应该在变量范围方面有任何问题,对吗?

include应该用于包含文件,而不是一些网络资源


如果你费心运行你在这里发布的代码,你会大吃一惊,因为它可以打印$activelang。

使用WordPress模板时,你应该在functions.php文件中创建函数来处理includes,然后在模板中调用这些函数

因此,在functions.php中,您应该具有:

function myOtherFile() {

    include('myotherfile.php');

}
在index.php中调用myOtherFile()

现在,如果您在范围方面仍有问题,请尝试以下方法:

function myOtherFile($activelang) {

    include('myotherfile.php);

}
然后在index.php中执行以下操作:

$activelang = active_language();

myOtherFile($activelang);

如果这不起作用,那么我认为你的问题是由其他地方引起的。因为正如斯帕奈尔上校所说,你在这里发布的代码是有效的。

在这里发布你的真实代码。你不把这个文件作为HTTP资源包括进来吗?问题是你执行的上下文。我不太了解WP安装,但它很可能在本地范围中包含您的第一个脚本。所以$activelang从来不是一个全球性的。对不起,我不知道你在说什么。网络资源?我包括一个php文件,其他文件也使用它。运行我在这里发布的代码是什么意思?@0al0用你提到的普通PHP测试你的代码,你就会明白我在说什么。